2010-03-24 3 views
0

У меня есть 2 таблицы.Запрос в нескольких таблицах с MYSQL

Таблица_1 имеет продукт 3 ряда: идентификатор, количество и цена. Таблица_2 имеет 2 строки: ID, Special_note.

Не все товары имеют специальное примечание. Когда у продукта нет специального примечания, в таблице нет строки для этого продукта.

Я пытаюсь использовать запрос выбора, который получит всю информацию из таблицы_1, но также возьмет специальное примечание от table_2, когда он есть.

Проблема, с которой я столкнулся сейчас, заключается в том, что, если нет специального примечания, она вообще не будет захватывать информацию в таблице_1.

Я понимаю, почему это делается, но я не знаю, как исправить запрос, чтобы он возвращал все продукты, есть ли специальное примечание или нет.

SELECT TABLE_1.ID, QUANTITY, PRICE, SPECIAL_NOTE 
FROM TABLE_1, TABLE_2 
WHERE TABLE_1.ID = TABLE_2.ID 

Я упростил запрос немного для целей этого примера.

Благодарим за помощь!

ответ

2

Используйте LEFT OUTER JOIN:

SELECT t1.ID, t1.QUANTITY, t1.PRICE, t2.SPECIAL_NOTE 
FROM TABLE_1 t1 
LEFT OUTER JOIN TABLE_2 t2 ON t1.ID = t2.ID 

Update:

Чтобы добавить пункт WHERE, например, где количество> = 1, сделать это:

SELECT t1.ID, t1.QUANTITY, t1.PRICE, t2.SPECIAL_NOTE 
FROM TABLE_1 t1 
LEFT OUTER JOIN TABLE_2 t2 ON t1.ID = t2.ID 
WHERE t1.QUANTITY >= 1 
+0

Большое спасибо , Попытка понять эту новую концепцию. Предположим, я хотел только захватить строки, где количество не менее 1. Где я могу добавить запрос where? После строки LEFT OUTER JOIN? – Enkay

+0

См. Мои правки, выше. – RedFilter

+0

Я понял это на простом примере! Попытка заставить его работать с моим очень длинным и сложным запросом. Большое спасибо! – Enkay

Смежные вопросы