2

我需要加入这两张桌子

  • 表 1:wp_usermeta,我存储用户上次登录时间的地方
  • 表 2:wp_chats,其中存储用户之间的聊天

此查询获取已登录用户并计算从该用户到当前用户的聊天记录。但是,如果该用户没有聊天,它将不会返回已登录的用户。

即使没有聊天,如何使此查询返回所有登录用户?

SELECT m.user_id, COUNT(c.from_id) as cnt 
FROM wp_chats c 
JOIN wp_usermeta m  ON  m.user_id=c.from_id
WHERE m.meta_key='user_last_login' 
 AND m.meta_value>=$time 
 AND c.to_id=$from_id 
 AND c.received=0 
GROUP BY c.from_id;

http://sqlfiddle.com/#!2/edc6b/1

用户 2、3、4、5、6 都已登录并且应该在输出中。用户 7 未登录且未出现。

然而,只有3、6个出现。我怎样才能让除了#7 之外的所有东西都出现在输出中?

4

1 回答 1

3

在小提琴http://sqlfiddle.com/#!2/edc6b/12中编辑完善的查询

SELECT m.user_id, COUNT(c.from_id) as cnt 
FROM wp_usermeta m
LEFT JOIN wp_chats c   
  ON  m.user_id=c.from_id
  AND c.received=0
  AND c.to_id=2
WHERE m.meta_key='user_last_login' 
AND m.meta_value>=1347305273               
GROUP BY m.user_id;
于 2012-09-11T19:47:34.750 回答