2015-11-20 3 views
-3

У меня есть PostgreSQL с двумя таблицами: Лицо & Адрес.Выберите из таблицы с дополнительными значениями

Лицо таблицы имеет внешний ключ, ссылающийся на таблицу адресов, но это поле является необязательным (по умолчанию NULL), поэтому для «Лица» не требуется «Адрес».

Я хочу получить (с запросом SELECT) все реестры Лица, независимо от того, имеют ли они адрес или нет. Как я могу сделать это в одном запросе?

+0

'SELECT * FROM Person р LEFT JOIN Адрес А на стр. = a. 'Когда у вас нет соответствующего значения во второй таблице, используйте' OUTER JOIN'. – lad2025

ответ

1

Вы хотите использовать LEFT JOIN, который возвращает все строки из первой таблицы независимо от того, найдена ли соответствующая строка в объединенной таблице.

Смотрите также: http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

SELECT * 
    FROM Person p 
     LEFT JOIN Address a 
      ON p.Address_ID = a.Address_ID 
+0

Спасибо и ребятам ^^. Раньше я делал соединения вручную в предложении WHERE, и я не понимал, чтобы использовать это. – malkomich

+2

@malkomich Синтаксис неявного соединения, который вы упоминаете, не является стандартом ANSI, и его следует избегать. –

1

Попробуйте использовать левое соединение, например:

select * from table1 left join table2 on table1.id = table2.id