我对SQL很陌生,所以如果有多种可能性我想全部看到它们(并且听到哪些可能性比其他可能性更好)。我使用的是sqlite3。
我有以下3个表:user
,channel
,subscriptions
用户:
user_id name
1 Johnny
2 Stacy
3 Allana
信道:
channel_id channel_name
1 ESPN
2 Disney
订阅:
user_id channel_id
1 1
2 2
3 1
3 2
要获取下表,我需要执行哪些SQL命令?我基本上想看看谁按名称订阅了哪些频道(所以在subscriptions
表格中列出了什么,但是根据其他表格将数字映射到名称。“
user_id channel_id
Johnny ESPN
Stacy Disney
Allana ESPN
Allana Disney
我已经尝试过以下但我在回复声明中没有得到任何结果:
select user.name, channel.channel_name from user, channel, subs where user.user_id == subs.user_id and channel.channel_id == subs.channel_id
答案 0 :(得分:1)
尝试一下,如果您遇到任何困难,请告诉我。
select a.name,c.channel_name
from
user a
left join
subscriptions b
on a.user_id = b.user_id
left join
channel c
on b.channel_id = c.channel_id;
或(以评论中提到的格式)
select u.name,c.channel_name
from
user u
left join
subscriptions s
on u.user_id = s.user_id
left join
channel c
on s.channel_id = c.channel_id;
答案 1 :(得分:0)
没有测试过,但试试这个:
select
u.name
,c.channel
from
user_id u
inner join subscriptions s
on u.user_id=s.user_id
inner join channel c
on s.channel_id=c.channel_id