2013-06-11 108 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。