2012-01-31 31 views
6

Tôi có bảng với các quốc gia, khu nghỉ dưỡng và hình ảnh cho khu nghỉ mát. Mỗi ảnh có thể được đánh dấu là tiêu đề cho album. Tôi muốn chọn tập dữ liệu đã kết hợp với id và tên quốc gia, id khu nghỉ mát và tên và ảnh chỉ khi nó được đánh dấu là tiêu đề, nếu không - null.sql tham gia trả về null nếu giá trị không tìm thấy

Tôi cố gắng để làm như sau:

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 

Và tôi đã có danh sách tất cả các bức ảnh - có tựa đề và không. Nếu tôi thêm filering bởi is_title submit ('và p.is_title = 1'), tất cả các khu nghỉ dưỡng không có ảnh có tiêu đề sẽ bị phân tách khỏi datase kết quả - không phải những gì tôi muốn.

Tôi chỉ muốn để có được một cái gì đó giống như (xem hàng cuối cùng):

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 

Trả lời

16

Bao gồm các vị thêm (s) trong tình trạng THAM GIA của bạn chứ không phải là mệnh đề WHERE để họ không gây ra toàn bộ hàng để bị xóa:

LEFT OUTER JOIN dbo.resorts_photo AS p 
ON p.resort_id = t.inc 
AND p.is_title = 1 
Các vấn đề liên quan