2013-05-16 6 views
67

Tôi có 2 truy vấn con, nhưng tôi gặp sự cố khi kết hợp các cột với nhau từ cùng một bảng. Tôi cố gắng:SQL tham gia trên nhiều cột trong cùng một bảng

SELECT * FROM 

(SELECT userid, listid 
FROM user_views_table 
WHERE date='2013-05-15' AND view_type='lists') a 

JOIN 

(SELECT sourceid, destinationid 
FROM actions_table 
WHERE date='2013-05-15' AND payloadtype='lists_user' AND actiontype='delete') b 

ON a.userid = b.sourceid 
ON a.listid = b.destinationid; 

Nếu tôi chỉ đơn giản là chấm dứt cuộc truy vấn với ON a.userid = b.sourceid nó hoạt động, nhưng làm thế nào tôi có thể cũng tham gia các bảng trên một cột cũng ON a.listid = b.destinationid ??

Bất kỳ trợ giúp nào được đánh giá cao.

+2

cảm ơn cho câu trả lời .. argh chỉ didn' t có chữ ";" ở cuối truy vấn trước đó – user1899415

Trả lời

105

Tham gia như thế này:

ON a.userid = b.sourceid AND a.listid = b.destinationid; 
+1

Có vẻ như rõ ràng nhìn lại nó, nhưng tôi muốn lưu ý rằng một OR hoạt động là tốt, bạn chỉ cần kết thúc với rất nhiều hồ sơ. – wastubbs

29

Bạn muốn tham gia với điều kiện 1 và điều kiện 2, vì vậy chỉ cần sử dụng AND từ khóa như sau

ON a.userid = b.sourceid AND a.listid = b.destinationid;