2012-07-24 51 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