2017-01-23 14 views
1

に参加左にNULLを返すように:選択は、私は次のようなデータを持つ2つのテーブル持って

ユーザー

user | online 
-------- ------- 
1  | 1 
2  | 0 
3  | 1 
4  | 1 
5  | 0 

写真

user_id | photo 
-------- ------- 
1  | photo1.jpg 
1  | photo2.jpg 
2  | photo3.jpg 
3  | photo4.jpg 

私は、すべてのユーザーそれを選択したいをユーザーが写真を持っているかどうか、カウントまたはnullを表示しているかどうか、オンラインであるかどうか(オンライン= 1)写真。

user_id | count 
-------- ------ 
1  | 2 
3  | 1 
4  | null 

答えて

1

はこれを試してみてください:上記の表を使用して、それはこのようなものになるだろう

select 
    u.user user_id, 
    case when count(p.user_id) > 0 then count(p.user_id) end `count` 
from users u 
left join photos p on u.user = p.user_id 
where u.online = 1 
group by u.user; 

あなたは、カウントを見つけるためにユーザーを超えるユーザーやグループ、それをに写真を左結合することができます。 countが0より大きい場合は、カウントを取得するか、またはnullを返します。

関連する問題