我会尽力解释清楚。我正在努力完成两件事,但我什至无法让第一件事正常工作。
我有一个架构,其中有一个成员表,该表具有多个表的外键。最后,我将从大约 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 条相应的记录也是如此。我一直在寻找类似将结果转换为 bool 值的东西,但没有找到任何东西。谁能建议一种方法来做到这一点?
感谢阅读,如有任何建议,我们将不胜感激。可能是我以错误的方式解决了这个问题,再次感谢任何建议。
最佳答案
尽管我不熟悉 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
关于Mysql - 多个连接表的总计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8231409/