2012-07-24 84 views
1

我有兩個表l & C它們由兩個字段l.mIDc.mID的C表包含三種類型的記錄cs, ls, & vs與我的查詢鏈接列計數我需要從L和作爲查詢有一部分選擇所有記錄三欄顯示cs, ls & vs的總數;MySQL查詢與

到目前爲止,我使用的是外部聯接:

SELECT l.*, COUNT(*) FROM l LEFT OUTER JOIN c ON c.mID = l.mID WHERE l.mID = 2 

但是,這只是一個附加柱採用了全總的任何幫助將是巨大的感謝。

+0

通過_totals_,你的意思是'SUM()'爲每個列? – 2012-07-24 15:12:23

+0

在這種情況下,顯示錶格的示例數據並解釋您嘗試執行的聚合可能很有用。 – 2012-07-24 15:13:45

+0

請提供樣本數據和期望的輸出。 – RedFilter 2012-07-24 15:13:54

回答

2

您可以在計數使用CASE聲明:

select 
    l.* 
    ,COUNT(CASE WHEN c.type = 'cs' then 1 END) as cscount 
    ,COUNT(CASE WHEN c.type = 'ls' then 1 END) as lscount 
    ,COUNT(CASE WHEN c.type = 'vs' then 1 END) as vscount 
from l 
left outer join c on c.mID = l.mID 
where l.mID = 2 
+0

感謝buddy真的很有幫助,也是我的問題的一個很好的解決方案:) – 2012-07-24 15:18:31

1
select 
    l.* 
    ,sum(c.type = 'cs') as cscount 
    ,sum(c.type = 'ls') as lscount 
    ,sum(c.type = 'vs') as vscount 
from l 
left outer join c on c.mID = l.mID 
where l.mID = 2 
+0

感謝這個,但它似乎乘以數值,即5變成25任何想法?我在l表中重複行,因爲它是一個視圖 – 2012-07-25 15:41:51