共有3个表:table_A{id, table_b_id, table_c_id}
,table_B{id,..}
和table_C{id}
我正在使用左连接来获取所有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}
答案 0 :(得分: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加入聚合结果。