Reputation: 5039
I have the following query: That I've just noticed isn't aggregating user's counts for when they have 0 item_count
. I have tried to adjust this query as i've made this mistake before, but not with this more complex kind of query, how would i need to adjust this in order for it to show a user's item_count even if 0??
SELECT u.ID AS user_id,
u.date_expired AS user_date_expired,
u.first_name AS first_name,
u.last_name AS last_name,
COUNT(i.id) AS item_count
FROM `user` `u`
LEFT JOIN `item` `i` ON i.recruiter_id = u.id
WHERE ((`u`.`id` IN ('15', '2', 13)) AND (i.date_added >
DATE_SUB(u.date_expired, INTERVAL 30 DAY)))
GROUP BY `u`.`id`
Thanks
Jonny
Upvotes: 0
Views: 55
Reputation: 92785
Try it this way
SELECT u.id AS user_id,
u.date_expired AS user_date_expired,
u.first_name AS first_name,
u.last_name AS last_name,
COUNT(*) AS item_count
FROM user u LEFT JOIN item i
ON i.recruiter_id = u.id
AND i.date_added > u.date_expired - INTERVAL 30 DAY
WHERE u.id IN (15, 2, 13)
GROUP BY u.id, u.date_expired, u.first_name, u.last_name
Upvotes: 1