2012-05-29 3 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

THis вызовет ошибку 'столбца 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

Пожалуйста, проверьте, какие один и нужно - LEFT OUTER JOIN: будет включать в себя все записи из таблицы, упомянутых в левой стороне и совпадающую Запись из Правый боковой стол, незапечатанная запись будет равна нулю

Ед.:

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

FULL OUTER JOIN: будет включать в себя все данные из таблицы как и непревзойденная будет нулевым

Ex:

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