[英]MySQL JOIN query giving different results on different databases
I'm running an query on my database locally installed on my machine and getting a result different to one when ran on my AWS RDS database. 我正在本地安装在计算机上的数据库上运行查询,并且在AWS RDS数据库上运行时得到的结果与查询结果不同。 I am running:
我在跑步:
SELECT SUM(Hours) AS 'TotalHours', Username, Name, Project_Name, Project_Ref, (37.5-SUM(Hours)) AS 'Missing'
FROM bookings b
JOIN projects p ON b.Project_ID=p.Project_ID
RIGHT JOIN users u ON b.User_ID=u.User_ID
WHERE ((Date BETWEEN '2017-07-01' AND '2017-07-30') OR Date IS NULL)
GROUP BY u.User_ID
When ran on local I get back every entry from the users table, even if they haven't made a booking on the bookings table. 当在本地运行时,即使用户未在预订表上进行预订,我也会从用户表中取回每个条目。
When ran on my server database I only get back users who have made a booking, not ever entry like expected when doing a right join. 当在我的服务器数据库上运行时,我只会找回已进行预订的用户,而不会像在进行正确加入时所期望的那样输入条目。
Try using LEFT JOIN
instead of RIGHT JOIN
, and put the Date
criteria in the ON
clause: 尝试使用
LEFT JOIN
代替RIGHT JOIN
,并将Date
条件放在ON
子句中:
SELECT SUM(Hours) AS 'TotalHours', Username, Name, Project_Name, Project_Ref, (37.5-SUM(Hours)) AS 'Missing'
FROM users AS u
LEFT JOIN bookings AS b ON b.User_ID = u.User_ID AND b.DATE BETWEEN '2017-07-01' AND '2017-07-30'
LEFT JOIN projects AS p ON b.Project_ID=p.Project_ID
I suspect the problem is related to the INNER JOIN
with projects
in between the users
and bookings
table. 我怀疑问题与
INNER JOIN
有关,该projects
位于users
和bookings
表之间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.