2013-02-18 72 views
0
table account: 
    acID (pri, uni, a-i) 
    ... 

table patient: 
    paID (pri, uni, a-i) 
    paAccountID (int, foreign key) 
    ... 

table test: 
    tsID (pri, uni, a-i) 
    tsAccountID (int, foreign key) 
    tsPatientID (int, foreign key) 
    tsStatus (int, ranges 0 to 3) 
    tsFlag (int, ranges 0 to 1) 

爲每位患者檢索的tsIDpatient數據和編號:SQL語句檢索幾大罪狀

​​

現在,我想檢索tsFlag=1數量,tsStatus=0數量,tsStatus的」數= 1'...數字tsStatus=3

由於爆丸的回答是:

SELECT patient.*, Count(tsID), SUM(tsStatus=0), 
SUM(tsStatus=1), SUM(tsStatus=2), SUM(tsStatus=3), SUM(tsFlag=1) 
FROM account 
LEFT JOIN patient ON acID = paAccountID 
LEFT JOIN test ON paID = tsPatientID 
WHERE paAccountID=1 
GROUP BY paID 

是工作就像一個魅力,但給人NULLSUM,如果Count=0 - 我怎樣才能0呢?

回答

3

您可以通過使用SUM得到X = Y的計數:

SELECT patient.*, SUM(tsStatus = 1) AS tsStatus1 
FROM ... 

可以爲其他列也這麼做。

您可以使用IFNULLCOALESCE指定一個默認的非空值:

IFNULL(SUM(tsStatus = 3), 0); 
+0

在MySQL'總和(tsStatus = 1)'是罰款太 – 2013-02-18 23:55:42

+0

@juergend哦,是的,良好的出發點 – 2013-02-18 23:56:38

+0

@ExplosionPills:很好,看到我的編輯... – michi 2013-02-19 00:07:25