левое объединение не работает - игнорирование записей левой таблицы - PullRequest
0 голосов
/ 04 мая 2018

у меня 3 стола

Стол ЗАКАЗЧИК

ID NUMBER NAME
--------------------------------------
1  12345  Apple
2  23456  Orange
3  25896  Banana

Таблица АККАУНТ

 ID    CUST_NUMBR  TYPE    BILLING_FK
 -------------------------------------
 1     12345        B      9876
 2     23456        R      8765
 3     25896        R      7654

Стол БИЛЛИНГ

 ID    Start_Date  End_Date 
 -------------------------------------
 1     BLAH       BLAH       
 2     BLAH       BLAH             
 3     BLAH       BLAH       

Отношения

  CUSTOMER.NUMBER = ACCOUNT.CUST_NUMBR
  ACCOUNT.BILLING_FK  = BILLING.ID

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

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

 select name,number,start_date
 from customer left join account on customer.number = account.cust_number,
 billing
 where account.billing_fk = billing.id

Как получить нулевую дату начала, если для этого клиента нет учетной записи.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Ваше состояние account.billing_fk = billing.id превращает ваш LEFT JOIN в INNER JOIN. Это в значительной степени исключает все NULL записи.

select name,number,start_date
from customer 
left join account on customer.number = account.cust_number
left join billing on account.billing_fk = billing.id
0 голосов
/ 04 мая 2018

Это не работает из-за следующего утверждения в вас, где предложение:

account.billing_fk = billing.id

Попробуйте переместить его на left join section

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