php - SQL fiddle 和 MySQL 服务器/PhpMyadmin 中的结果不同

标签 php mysql

这是 sql fiddle :http://sqlfiddle.com/#!2/e6acc/4

它显示了正确的结果,因为我希望枚举重复的条目。

但是当我在 mysql/phpmyadmin 上运行时,结果是这样的:

1515    Abdominal
1100    Hep B Inj Fee
40  1-Ligation
40  1-Ligation
900 1-Suturing Fee
900 1-Suturing Fee
900 1-Suturing Fee
900 1-Suturing Fee

都是1。我已经重启了我的电脑。它仍然是一样的。这是为什么?我刚刚将 csv 表从我的 mysql 检索到 fiddle 。

编辑: 好的,这越来越奇怪了。在我的前端,当我查看其他 ID 时,它会工作: enter image description here

但是,当我更改查询中的 ID 并在 phpmyadmin 中输入时,它仍然显示 1。

最佳答案

我不知道为什么 SQL Fiddle 与实际结果不同,但我设法让它在 PHP 中为我工作。使用以下查询:

SELECT
  c.procno,
  CONCAT(CASE WHEN cnt > 1 THEN CONCAT(RN,'-') ELSE '' END, t.Proc) Proc
FROM
  (
    SELECT
      @curRow:=CASE WHEN @prevRow = a.Proc THEN @curRow+1 ELSE 1 END AS rn,
      a.Proc,
      a.Procno,
      @prevRow:=Proc grp
    FROM (    
          SELECT
            `incurredcharges`.`procedure_no` procno,
            `c`.`procedure` proc
          FROM
            incurredcharges
            INNER JOIN (
              SELECT `procedure`, `procedure_no` FROM `charges`
              UNION ALL
              SELECT `confinement`, `procedure_no` FROM `confinement`
              UNION ALL
              SELECT `service`, `procedure_no` FROM `ultrasound`
            ) c ON `incurredcharges`.`procedure_no` = c.`procedure_no`
          WHERE `incurredcharges`.`patient_no` = '34'
          ORDER BY `c`.`procedure`
      ) a 
          JOIN (SELECT @curRow:=0, @prevRow:= '') r
  ) t JOIN
  (
          SELECT
            `incurredcharges`.`procedure_no` procno,
            `c`.`procedure` proc, Count(*) cnt
          FROM
            incurredcharges
            INNER JOIN (
              SELECT `procedure`, `procedure_no` FROM `charges`
              UNION ALL
              SELECT `confinement`, `procedure_no` FROM `confinement`
              UNION ALL
              SELECT `service`, `procedure_no` FROM `ultrasound`
            ) c ON `incurredcharges`.`procedure_no` = c.`procedure_no`
          WHERE `incurredcharges`.`patient_no` = '34'
          GROUP BY `incurredcharges`.`procedure_no`,
            `c`.`procedure`
  ) c ON t.proc = c.proc

我唯一更改的是第 27 行,从 JOIN (SELECT @curRow:=0) rJOIN (SELECT @curRow:=0, @prevRow:= '') r

关于php - SQL fiddle 和 MySQL 服务器/PhpMyadmin 中的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14863961/

相关文章:

php - 为 PHP 5.5.9 安装旧版本的 Yaml (1.3.1)

php - 使用一个 PHP 提交按钮更新多个 MySQL 行

mysql - 如何计算客户推荐数量?

php - 用 PHP 匹配卡片

php - 为什么 CakePHP 会复制我的查询? (这与通常被问到的 "too many queries"问题不同)

php - 如何在 Twig 中隐藏本地化货币过滤器的小数部分

Java - MySQL - 连接到 MySQL 数据库时出错

python - Django Manager.values() 返回一个神秘的 None

mysql - 运行 mysqldump 会修改二进制日志吗?

mysql - 插入 - 不存在的地方