SQL присоединяется, когда есть соответствующий пост или нет - PullRequest
2 голосов
/ 08 октября 2011

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

Выберите * из списка клиентов cu, присоединитесь к cp клиента по адресу cu.customer_id = cp.customer_id

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

Ответы [ 3 ]

1 голос
/ 08 октября 2011

Вы используете левое (внешнее) соединение.Пример:

select c.CustomerId, p.PhoneNumber, cc.Complaint
from Customer c
inner join CustomerPhone p on p.CustomerId = c.CustomerId
left join CustomerComplaint cc on cc.CustomerId = c.CustomerId

Данные, которые вы получите там, где нет подходящей записи, будут нулевыми, т. Е. Если жалоб нет, cc.Complaint вернет ноль.

1 голос
/ 08 октября 2011

Использовать LEFT OUTER JOIN

Select * from customer cu left outer join customerphone cp on cu.customer_id = cp.customer_id

Это приведет к отображению NULL, когда нет соответствующей записи.

Если вы хотите указать значение по умолчанию, вы можете использовать ISNULL в TSQL или COALESCE в MySQL

0 голосов
/ 08 октября 2011

Вы хотите сделать НАРУЖНОЕ СОЕДИНЕНИЕ.

Это хорошая ссылка: http://www.oracle -base.com / статьи / 9i / ANSIISOSQLSupport.php # outer_join

Надеюсь, это поможет,

1010 * -Марк *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...