我有三张表(更多的列,但列出了重要的列):
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'
这带来了两个结果,这是正确的——下一个查询试图找出这两个中的哪一个也在 list_contribute 表中——但是,它将结果减少到一个,而我希望它返回两个结果,如果不是,则显示 0 表示 how_many在 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