Mysql - 汇总多个连接表的计数

时间:2011-11-22 17:56:29

标签: mysql sql

我会尽力解释清楚。我正在努力完成两件事,但即使让第一件工作正常也很难。

我的架构有一个成员表,其中包含多个表的外键。最后,我将从大约10个表中提取,这些表可能有也可能没有特定成员的记录。我想要得到所有计数的总和。我的查询如下:

SELECT (COUNT(tb1.member_id) + COUNT(tb2.member_id)) as total
FROM members m
LEFT JOIN table_1 tb1 ON tb1.member_id = m.member_id
LEFT JOIN table_2 tb2 ON tb2.member_id = m.member_id
WHERE m.member_id = 27

其中27是我正在使用的测试帐户的member_id。这不会产生准确的结果,我相信这是因为左连接,它似乎是抛弃了东西,我总共得到8,即使每种记录只有两种。如果我消除了其中一个左连接,那么我得到了预期的结果。

有谁能告诉我应该怎么做呢?

这是我的问题的第一部分。第二个问题是,在某些情况下,我希望每个结果都计为1或0,即使有2或3个相应的记录。我一直在寻找像结果一样的结果,但没有找到任何东西。有人可以建议一种方法吗?

非常感谢阅读,我们非常感谢任何建议。可能是我以错误的方式处理这个问题,再次感谢任何建议。

1 个答案:

答案 0 :(得分:1)

即使我不熟悉mysql的最新技术,我也很确定这样的东西会起作用:

SELECT 
(select COUNT(*) from table_1 = where member_id = m.member_id) 
+ 
(select COUNT(*) from table_2 = where member_id = m.member_id)
as total

FROM members m
WHERE m.member_id = 27