Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql-多个联接表的求和计数_Mysql_Sql - Fatal编程技术网

Mysql-多个联接表的求和计数

Mysql-多个联接表的求和计数,mysql,sql,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 LE

我会尽力解释清楚。我试图完成两件事,但我甚至在第一件事上都有困难

我有一个模式,它有一个成员表,其中有多个表的外键。最后,我将从大约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是我正在使用的测试帐户的成员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

关于问题的第二部分,您可以在SELECT子句中直接使用条件句[这样您可以检查count>0非常感谢,这正是我要找的。对于我要进行的bool类型SELECT,我最后做了:很高兴提供帮助。对于将来的参考,这种查询称为“相关子查询”.btw.请将问题设置为已回答,谢谢