表A,B,C與3個表的MYSQL聯接
如何創建一個連接這三個表的查詢。條件是Table A
必須有記錄。
我試過這樣
select * from a
left join b on a.article_id = b.article_id
left join c on b.file_id = c.submission_id
where c.user_id = 6;
我的查詢沒有的情況下工作,即Table C
缺少記錄。在這種情況下,連接不適用於這三個表。
表A,B,C與3個表的MYSQL聯接
如何創建一個連接這三個表的查詢。條件是Table A
必須有記錄。
我試過這樣
select * from a
left join b on a.article_id = b.article_id
left join c on b.file_id = c.submission_id
where c.user_id = 6;
我的查詢沒有的情況下工作,即Table C
缺少記錄。在這種情況下,連接不適用於這三個表。
外表上的任何條件都必須是int相關的ON子句,而不是WHERE子句。
例如:
select * from a
left join b on a.article_id = b.article_id
left join c on b.file_id = c.submission_id and c.user_id = 6;
如果使用LEFT JOIN
,然後從a
和b
記錄被選中,即使有表c
沒有相應的記錄。改爲使用INNER JOIN
:
SELECT * FROM a
INNER JOIN b ON a.article_id = b.article_id
INNER JOIN c ON b.file_id = c.submission_id
WHERE c.user_id = 6;
我想這就是他想要的。問題並不是全部要清楚:] – Konerak 2012-04-18 14:55:54
對不起,但問題出在我的方法。我已經糾正了這個問題。 – SupaOden 2012-04-18 14:57:23
@Konerak,缺少WHERE子句int eh最終查詢有點可疑,但我認爲這是一個安全的答案,因爲根據我的經驗,這是我在SO上的mysql問題中看到的最常見的問題。 – 2012-04-18 15:05:54