2012-01-31 116 views
6

我有桌子与度假村的国家,度假村和照片。每张照片可能被标记为相册标题。我想选择带有国家/地区ID和名称的连接数据集,度假村ID和名称以及照片仅在标记为标题时使用,否则为空。如果没有找到值,则sql连接返回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 [email protected]_id 

而且我已经得到了所有照片的清单 - 标题不能及的。如果我通过is_title提交('and p.is_title = 1')添加文件,所有没有标题为照片的度假村将从结果数据中删除 - 而不是我想要的。

我只是想获得类似的信息(见最后一行):在你的JOIN条件

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 

回答

16

所包括的额外谓词(S),而不是在WHERE子句,以便它们不会导致整个行被删除:

LEFT OUTER JOIN dbo.resorts_photo AS p 
ON p.resort_id = t.inc 
AND p.is_title = 1 
相关问题