2013-06-11 109 views
0

的行数表B中有3个表:table_A{id, table_b_id, table_c_id}table_B{id,..}table_C{id}LEFT JOIN与表C中

我使用左加入拿到全A的,加入了与table_B.id。

我需要的是从table_C中添加项目的计数。
我不喜欢用子查询来做,有可能吗?

查询:

SELECT table_A.* 
    FROM table_A 
LEFT JOIN table_B 
    ON table_B.id = table_A.table_b_id 
WHERE table_A.{field} = {condition} 
GROUP BY table_A.{some_field} 

回答

2

尝试

SELECT table_A.*, 
     COUNT(table_C.id) count_of_c 
    FROM table_A 
LEFT JOIN table_B 
    ON table_B.id = table_A.table_b_id 
LEFT JOIN table_C 
    ON table_C.id = table_A.table_c_id 
WHERE table_A.{field} = {condition} 
GROUP BY table_A.{some_field} 

在一个侧面说明:尽管MySQL GROUP BY扩展允许你把列SELECT是不是GROUP BY部分不这样做,因为没有办法知道在一个组中选择哪一行。因此,你的SELECT条款应该像

table_A.{some_field}, <Aggregate function>(table_A.{other_field})... 

,或者您的加盟聚集结果与TABLE_A。