左侧联接表上的MySQL计数忽略未联接记录
我有3个表(这些是主要字段):左侧联接表上的MySQL计数忽略未联接记录,mysql,group-by,left-join,Mysql,Group By,Left Join,我有3个表(这些是主要字段): 好友(存储用户的好友) id\u用户 id_str(twitter唯一id) 用户(存储用户) id\u用户 id_str(twitter唯一id) 名字 wc_预测(用户预测) id_预测 id\u用户 我需要从用户ID 3中选择所有好友的列表,以及他们的预测计数。这是我当前的查询: SELECT COUNT(wc_forecast.id_forecast) AS q, user.name AS name, user.screen_name AS
- 好友(存储用户的好友)
- id\u用户
- id_str(twitter唯一id)
- 用户(存储用户)
- id\u用户
- id_str(twitter唯一id)
- 名字
- wc_预测(用户预测)
- id_预测
- id\u用户
SELECT
COUNT(wc_forecast.id_forecast) AS q,
user.name AS name, user.screen_name AS screen_name
FROM user
JOIN friend ON friend.id_str = user.id_str
LEFT JOIN wc_forecast ON wc_forecast.id_user = user.id_user
WHERE
friend.id_user = 3
GROUP BY wc_forecast.id_user
ORDER BY q DESC
问题是并不是所有的用户都被显示出来。特别是那些没有做出任何预测的公司不在该名单中。奇怪的是,其中只有一个是
下面是一个示例,其中包含一些示例记录
问题是,如何显示所有用户朋友的列表,包括所有在wc_forecast中没有记录的朋友?我想如果没有分组依据的值,则将其排除在外 请注意,您是按“wc\u forecast.id\u user”分组的,该用户可能存在,也可能不存在。如果它确实存在,您将获得值。如果它不存在,你将一无所获。也许您想通过合并进行分组(wc\u forecast.id\u user,user.id\u user)?或者简单地按user.id\u user分组,因为如果朋友的预测存在,它们应该是相同的值
SELECT
COUNT(wc_forecast.id_forecast) AS q,
user.name AS name,
user.screen_name AS screen_name
FROM user
JOIN friend ON friend.id_str = user.id_str
LEFT JOIN wc_forecast
ON wc_forecast.id_user = user.id_user
WHERE
friend.id_user = 3
GROUP BY
user.id_user
ORDER BY
q DESC
我想,如果没有分组依据的值,则将其排除在外 请注意,您是按“wc\u forecast.id\u user”分组的,该用户可能存在,也可能不存在。如果它确实存在,您将获得值。如果它不存在,你将一无所获。也许您想通过合并进行分组(wc\u forecast.id\u user,user.id\u user)?或者简单地按user.id\u user分组,因为如果朋友的预测存在,它们应该是相同的值
SELECT
COUNT(wc_forecast.id_forecast) AS q,
user.name AS name,
user.screen_name AS screen_name
FROM user
JOIN friend ON friend.id_str = user.id_str
LEFT JOIN wc_forecast
ON wc_forecast.id_user = user.id_user
WHERE
friend.id_user = 3
GROUP BY
user.id_user
ORDER BY
q DESC
谢谢!很好,谢谢!很好。