0

有 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}
4

1 回答 1

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列放入其中,但不要这样做,因为无法确定在组中选择哪一行。因此你的条款应该看起来像SELECTGROUP BYSELECT

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

或者您必须将聚合结果与 table_A 连接起来。

于 2013-06-11T17:51:36.357 回答