2

複雑な MySQL クエリで少し問題が発生しています。このクエリから 3 つの列を取得しようとしています。処置の名前、各処置のサイト合計、および各処置の医師合計 (ユーザー合計)。procedures2 つのテーブルをリンクしていtbl_syn_procedureます。

Physician Total (ユーザーの合計) を取得する条件は 1 つだけですがprocedures.phys_id = '##'、これをクエリに組み込む方法がわかりません。

現在、必要なデータの半分を提供する大きなクエリがあります。

SELECT  
  IFNULL( Synoptic, 'Total Count') AS Synoptic, Total
FROM ( 
SELECT  
  Synoptic, 
  SUM( Data ) AS Total
FROM ( 
      SELECT 
        tbl_syn_procedure.name AS 'Synoptic',
        COUNT(*) AS Data
        FROM procedures 
        JOIN tbl_syn_procedure ON 
        procedures.proc_synoptic_id = tbl_syn_procedure.name_id 
        GROUP BY procedures.proc_synoptic_id 
     ) AS stats 
  GROUP BY Synoptic WITH ROLLUP
) AS stats

これにより、次のような 2 列のテーブルが得られます。

シノプティック -------------------------- 合計

APBI デバイスの挿入 ---------- 1328

MRI誘導生検 ------------- 71

定位生検 ------------- 10504

合計数 ---------------------- 11903

しかし、ご覧のとおり、医師の合計 (ユーザーの合計) がありません。この 3 番目の列をクエリに追加する方法についてアドバイスをいただければ幸いです。

4

1 に答える 1

0

これを試して

select
count(p.proc_synoptic_id), p.proc_synoptic_id, name, num_phys_procedures
from
procedures p
inner join tbl_syn_procedure on p.proc_synoptic_id = tbl_syn_procedure.name_id
left join
(
    select count(proc_synoptic_id) as num_phys_procedures, proc_synoptic_id from procedures
    where phys_id = ##
    group by proc_synoptic_id
) phys_procedures on p.proc_synoptic_id = phys_procedures.proc_synoptic_id

group by proc_synoptic_id, name;

最初に処置の総数を取得し、次にphys_procedures特定の医師の処置の数を含む派生テーブルに対して結合します。

于 2012-11-05T14:12:48.603 に答える