我希望在请求的日期间隔内输出用户及其wins
和losses
的总数。当我在包含results
表中的记录的日期范围内运行下面的查询时,一切正常。但是,如果用户在results
表中没有所请求日期间隔的任何记录,则根本没有用户在请求中返回。我想要的是无论如何都要返回用户记录,即使用户在results
表中没有任何记录请求的日期间隔。
我相信GROUP BY
使其表现得那样,但我不确定如何配置查询以我需要的方式工作。
SELECT
users.name,
users.division,
SUM(results.wins) as wins,
SUM(results.losses) as losses
FROM users LEFT JOIN results ON users.user_id = results.user_id
AND results.date BETWEEN {$startDate} AND {$endDate}
WHERE users.user_id = {$user_id} GROUP BY results.user_id;
答案 0 :(得分:1)
返回用户,就在id为NULL
的行上。您按第二个表中的ID进行分组。
而是按第一个表字段分组:
SELECT u.name, u.division,
SUM(r.wins) as wins, SUM(r.losses) as losses
FROM users u LEFT JOIN
results r
ON u.user_id = r.user_id AND r.date BETWEEN {$startDate} AND {$endDate}
WHERE u.user_id = {$user_id}
GROUP BY u.user_id;
---------^