2012-12-19 32 views
1

連接表時,我有,我想加入沒有與.NET

SELECT b.nickname,count(a.doctor_id) 
FROM a_table a 
join b_table b 
on (a.doctor_id=b.id_user) 
GROUP BY a.doctor_id 

SELECT doctor_id, SUM(medicine) medicine, SUM(radiology) radiology,sum(lab) lab, sum(act) act 
FROM  (
    SELECT MAX(doctor_id) doctor_id, 
      SUM(IF(pm='F', cost, NULL)) medicine, 
      SUM(IF(pm='R', cost, NULL)) radiology, 
      SUM(IF(pm='L', cost, NULL)) lab, 
      SUM(IF(pm='P', cost, NULL)) act 
    FROM  c_table 
    GROUP BY Trans_No 
) t 
GROUP BY doctor_id 

我已經嘗試過加入

SELECT b.nickname, count(a.doctor_id), SUM(medicine) medicine, SUM(radiology) radiology,sum(lab) lab, sum(act) act 
FROM  (
    SELECT MAX(doctor_id) doctor_id, 
      SUM(IF(pm='F', cost, NULL)) medicine, 
      SUM(IF(pm='R', cost, NULL)) radiology, 
      SUM(IF(pm='L', cost, NULL)) lab, 
      SUM(IF(pm='P', cost, NULL)) act 
    FROM  c_table 
    GROUP BY Trans_No 
) t 
join a_table a on (a.doctor_id=t.doctor_id) 
join b_table b on (a.doctor_id=b.id_user) 
GROUP BY a.doctor_id 

所有的這兩個查詢響應表有大量的數據(超過200萬的數據),我已經設置了我的CommandTimeout = 600,但它仍然沒有迴應

我加入了它錯誤還是隻是爲了許多數據?我該怎麼做才能得到結果?

+0

直接在數據庫而不是代碼上運行查詢需要多長時間?它返回什麼? – David

+1

您是否看過預計的執行計劃以查看可能發生的情況?這些表格是否適當地編制索引?索引統計數據是最新的嗎? – HABO

回答

0

這不是一個答案,但它太長的評論。

您的查詢沒有意義。我認爲你需要再看看這個問題。第一個查詢:

SELECT b.nickname,count(a.doctor_id) 
FROM a_table a 
join b_table b 
on (a.doctor_id=b.id_user) 
GROUP BY a.doctor_id 

總是將返回1 count(a.doctor_id),除非doctor_id爲NULL。這是因爲你在該列上分組。你的意思是爲每個醫生的每個暱稱或綽號的數量計算醫生的數量嗎?

在第二個查詢中的子查詢也沒有多大意義:

SELECT MAX(doctor_id) doctor_id, 
     SUM(IF(pm='F', cost, NULL)) medicine, 
     SUM(IF(pm='R', cost, NULL)) radiology, 
     SUM(IF(pm='L', cost, NULL)) lab, 
     SUM(IF(pm='P', cost, NULL)) act 
FROM  c_table 
GROUP BY Trans_No 

你爲什麼要分組的trans_no?你爲什麼不使用它作爲索引?

也許你應該寫另一個問題,解釋你正在努力完成的事情。