简体   繁体   English

聚合相当复杂的联接

[英]Aggregation of a fairly complex join

I have the following query: That I've just noticed isn't aggregating user's counts for when they have 0 item_count . 我有以下查询:我刚刚注意到的是,当用户的item_count为0时,它不会汇总用户的计数。 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?? 我已经尝试过调整该查询,因为之前我犯了这个错误,但是没有使用这种更复杂的查询,我将如何调整它以使其显示用户的item_count(即使为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 强尼

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM