Sql 如何进行联接以获得此结果
我在连接两个表以获得表C中的结果时遇到问题Sql 如何进行联接以获得此结果,sql,join,Sql,Join,我在连接两个表以获得表C中的结果时遇到问题 方案A允许进入所有房间A 选项B允许进入A选项和B选项的所有房间 选项B允许进入A选项、B选项和C选项的所有房间 如何连接这些表table_A和table_B以获得类似table_C的内容 表A name option sex Ann A K Cezar B M Martha C K 表B Room option pool A river A gym
- 方案A允许进入所有房间A
- 选项B允许进入A选项和B选项的所有房间
- 选项B允许进入A选项、B选项和C选项的所有房间
name option sex
Ann A K
Cezar B M
Martha C K
表B
Room option
pool A
river A
gym B
slide B
spa C
sauna C
表C
name option sex Room
Ann A F Pool
Ann A F River
Cezar B M Pool
Cezar B M River
Cezar B M Gym
Cezar B M Slide
Martha C F Pool
Martha C F River
Martha C F Gym
Martha C F Slide
Martha C F Spa
Martha C F Sauna
您可以在
JOIN
s中使用不等式。这似乎就是你想要的:
select a.*, b.*
from table_A a join
table_B b
on b.option <= a.option
选择a.*,b*
从表A连接
表B
b.选择权
此处需要的输出是您的查询:)
Gordon的解决方案可以很好地用于该样本数据。
因为A
但如果需要更加明确:
select a.name, b.[option], a.sex, b.Room
from table_A a
join table_B b
on b.[option] = a.[option] -- include same option
or b.[option] = 'A' -- always include option A rooms
or (b.[option] = 'B' and a.[option] = 'C')
(1) 我假设您的意思是C提供对A、B和C的访问。(2)您应该用您正在使用的数据库进行标记。
select a.name, b.[option], a.sex, b.Room
from table_A a
join table_B b
on b.[option] = a.[option] -- include same option
or b.[option] = 'A' -- always include option A rooms
or (b.[option] = 'B' and a.[option] = 'C')