我有国家,度假村和度假村照片的桌子.每张照片都可以标记为专辑的标题.我想选择带有国家ID和名称,度假村ID,名称和照片的联合数据集,只有它标记为标题,否则 - null.
我试着做以下事情:
select
s.id as c_id,
s.name as c_name,
t.id as r_id,
t.name as r_name,
p.thumbnail as image,
p.description as desc,
p.is_title
from dbo.countries s
join dbo.resorts t on t.state=s.inc
left outer join dbo.resorts_photo p on p.resort_id=t.inc
where s.inc=@country_id
Run Code Online (Sandbox Code Playgroud)
而且我有所有照片的清单 - 标题而不是.如果我通过is_title文件添加文件('和p.is_title = 1'),所有没有标题照片的度假村将从结果数据中删除 - 而不是我想要的.
我只想得到类似的东西(见最后一行):
c_id c_name r_id r_name image desc is_title
2 Australia 17 Adelaida 0xXXXX NULL 1
2 Australia 178 BB Rief 0xXXXX blah 1
2 Australia 160 Brum NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 18
在JOIN条件中包含额外谓词而不是WHERE子句,以便它们不会导致整行被删除:
LEFT OUTER JOIN dbo.resorts_photo AS p
ON p.resort_id = t.inc
AND p.is_title = 1
Run Code Online (Sandbox Code Playgroud)