2

これら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 に答える