私は3つのテーブルを持っています(さらに多くの列がありますが、重要なものをリストしています):
users
user_id - name
1 DAN
2 TED
3 SAM
list_shares
list_shares_id - user_id - list_id
1 1 123
2 3 123
3 2 456
list_contribute
list_contr_id - list_id - can_contribute
1 123 3
list_id の下のテーブル list_shares にいるすべてのユーザーを表示し、それを users テーブルと結合してユーザー情報を取得し、貢献テーブルにも含まれているユーザーの数をカウントしたい
基本的に、ユーザーはリストをユーザーと共有し、一部のユーザーを招待して投稿することができますが、共有しているすべてのユーザーが投稿できるわけではないため、別の list_contribute テーブルを使用します。
これは私が最初に使用しているもので、特定のIDを持つすべてのユーザーを表示するだけです:
select u.name, u.live_prof_pic, u.url, u.user_id from list_shares ls
join users u on ls.user_id = u.user_id
where ls.list_id = '123'
これにより、正しい2つの結果が表示されます-次のクエリは、これら2つのうちどちらがlist_contributeテーブルにあるかを見つけようとしていますが、結果を1つに減らしますが、両方を返し、そうでない場合はhow_manyに0を表示したいlist_contribute で
select u.name, u.live_prof_pic, u.url, count(ls.list_shares_id) as how_many, u.user_id from list_shares ls
join users u on ls.user_id = u.user_id
left join list_contribute lc on ls.list_id = lc.list_id
where ls.list_id = '123'
上記のデータで私は返したい
user_id name how_many
3 SAM 1
1 DAN 0