2012-05-29 56 views
3

我必須得到表格,我想要獲得通過一個普通單元連接的所有結果。問題是第二個表只有第一個表的一些記錄。加入兩個表的所有內容

Table 1 forms 
form_id, description, image,dept 

Table 2 records 
record_id, form_id, comments, added_date, done_date 

如果做這樣的查詢:

SELECT * FROM form 
JOIN records ON record.form_id = form.form_id 

我沒有得到所有的形式,因爲對於這種形式的任何記錄。有沒有做這樣的事情?我會爲記錄表中的每個表單創建一個空白記錄,但我無法弄清楚。

回答

0

使用左加入對於這些情況

SELECT * FROM form 
LEFT JOIN records ON record.form_id = form.form_id 
2

這是LEFT OUTER JOIN的完美應用。
例子:

SELECT f.*, r.* 
FROM form f 
     LEFT JOIN records r 
     ON r.form_id = f.form_id 
ORDER BY f.description, r.added_date; 
+0

這將引發一個錯誤'列form_id是ambiguous'。您必須指定帶有別名'SELECT f.form_id,f.description,f.image,f.dept,r.record_id,r.form_id作爲record_form_id,r.comments,r.added_date,r.done_date FROM的列。 ..'甚至不詢問r.form_id來減少通過線路傳輸的數據。無論如何,'LEFT JOIN'是正確的。 –

0

請檢查u需要哪一個 - LEFT OUTER JOIN: 將包括在表左側提及並匹配從記錄的所有記錄右側表,未分割記錄將爲空

例如:

SELECT * 
FROM forms 
LEFT JOIN records ON forms.form_id = record.form_id 

FULL OUTER JOIN: 將包括兩個表中的所有數據和無可比擬的將是無效

例:

SELECT * 
FROM forms 
FULL OUTER JOIN records ON forms.form_id = record.form_id