我有国家,度假村和度假村照片的表格。每张照片都可以标记为专辑的标题。我想选择带有国家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
我有所有照片的清单 - 标题而不是。如果我通过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
答案 0 :(得分:18)
在JOIN条件中包含额外谓词而不是WHERE子句,以便它们不会导致整行删除:
LEFT OUTER JOIN dbo.resorts_photo AS p
ON p.resort_id = t.inc
AND p.is_title = 1