2013-08-15 6 views
0

У меня есть 2 таблицы в базе данных person и order таблиц.Объединение двух таблиц для результата?

PERSON таблице:

PERSON_ID | NAME 

ЗАКАЗАТЬ столик:

ORDER_ID | ORDER_NO | PERSON_ID 

Мне нужно, чтобы отобразить все заказы + имя соответствующего лица, если оно существует, если не только детали заказа.

До сих пор я встал на запрос:

SELECT ORDER_ID, ORDER_NO, order.PERSON_ID, NAME 
    FROM person, order 
WHERE person.PERSON_ID = order.PERSON_ID AND 
     person.FIRST_NAME IS NOT NULL; 

Который дает мне заказы только если имя доступно в то время как мне нужно, чтобы отобразить все заказы, несмотря на то, если имя доступно или нет.

Любые предложения?

+1

'order' - зарезервированное слово в SQL. Старайтесь избегать его как идентификатора. – wildplasser

+0

@wildplasser Альтернативно, escape * all * identifiers, в случае, если какая-то будущая СУБД вводит «человек» (например) в качестве ключевого слова. :) –

ответ

2

Да, вы можете использовать LEFT JOIN для этого:

SELECT o.order_id, o.order_no, o.person_id, p.name 
    FROM `order` o 
LEFT JOIN person p 
     ON p.person_id = o.person_id AND p.FIRST_NAME IS NOT NULL 

С LEFT JOIN если name является null он все равно будет давать вам приказы.

+0

+1 Я отправил ответ «ПРАВЫЙ ПРИСОЕДИНЯЙТЕ», но мое 'p.first_name IS NOT NULL' сломало его. Итак ... Я, например, приветствую наших новых повелителей «LEFT JOIN». –

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