Выберите данные из трех таблиц, включая ноль - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть 3 таблицы:

1. tbl_Country(CountryID,CountryName)
2. tbl_Customer(CustumerID,Name,CountryID,StateID)
3. tbl_State(StateID,StateName,CountryID)

Я пытаюсь объединить эти таблицы, используя запрос ниже:

select cu.CustID,
       cu.CountryID,
       cu.StateID,
       cu.Name,
       c.CountryName,
       s.StateName 
from tbl_Customer cu, 
     tbl_Country c,
     tbl_State s 
where c.CountryID = cu.CountryID and 
       s.StateID = cu.StateID and 
       c.CountryID = s.CountryID

Но я не могу выбрать клиентов, которые не указали название страны или название штата. Я не знаю, как написать полный запрос внешнего соединения.

Ответы [ 2 ]

4 голосов
/ 10 апреля 2019

использовать явное соединение

  select cu.CustID,
           cu.CountryID,
           cu.StateID,
           cu.Name,
           c.CountryName,
           s.StateName  
    from tbl_Customer cu left join
         tbl_Country c on   c.CountryID = cu.CountryID
         left join tbl_State s   s.StateID = cu.StateID
         and c.CountryID = s.CountryID
3 голосов
/ 10 апреля 2019

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

SELECT cu.CustID, 
       cu.CountryID, 
       cu.StateID, 
       cu.Name, 
       c.CountryName, 
       s.StateName 
FROM   tbl_Customer cu 
       LEFT JOIN tbl_Country c 
              ON cu.CountryId = c.CountryId 
       LEFT JOIN tbl_State s 
              ON s.StateID = cu.StateID 
                 AND c.CountryID = s.CountryID 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...