6

これはSQLフィドルです: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です。私はすでに自分のPCを再起動しました。そしてそれはまだ同じです。何故ですか?mysqlからフィドルにcsvテーブルを取得しました。

編集:わかりました、これはより奇妙になっています。私のフロントエンドでは、他のIDを表示すると機能します。 ここに画像の説明を入力してください

それでも、クエリのIDを変更してphpmyadminに入力すると、1が表示されます。

4

1 に答える 1

0

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) rからJOIN (SELECT @curRow:=0, @prevRow:= '') r

于 2013-02-18T10:13:15.297 に答える