Добавление таблиц меньшего размера с помощью JOIN

#sql #sql-server #join

#sql #sql-сервер #Присоединиться

Вопрос:

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

  ------------ ---------- ---------- ----------- ------------ 
| Access ID  |  Client  |  Seller  |  Manager  |  Function  |
 ------------ ---------- ---------- ----------- ------------ 
 
  • Access ID исходит из таблицы BO
  • Client исходит из таблицы BO
  • Seller исходит из таблицы BO
  • Manager исходит из таблицы BO2
  • Function исходит из таблицы CM3

Мой код для JOIN ‘s таков:

 SELECT BO.accessid, BO.client, BO.seller_name, BO2.manager, CM3.func FROM BO
JOIN BO2 ON BO2.bo2stamp = BO.bostamp
JOIN CM3 ON CM3.seller_number = BO.seller_number
 

Теперь я хочу добавить таблицу u_numbers , но когда я добавляю JOIN u_numbers n ON n.bostamp = BO.bostamp результаты моего запроса, они почему-то уменьшаются с 49 до 26 строк.

В каждой другой таблице около 20 столбцов, но в u_numbers таблице всего 5, а строк намного меньше, но даже тогда я думал, что когда я добавлю эту таблицу, количество строк, возвращаемых запросом, будет таким же, как в этой, но в этой таблице 38 строк.

Структура таблицы для u_numbers :

  ----------------- ----------- ---------- --------- --------------- 
| u_numbersstamp  |  bostamp  |  number  |  order  |  Portability  |
 ----------------- ----------- ---------- --------- --------------- 
 

Моя цель с этим запросом состояла бы в том, чтобы добавить строку в запрос для каждого числа , где order <> 1 , и для этого я попытался

 CASE WHEN n.order <> 1 THEN n.number ELSE bo.accessid END
 

Этот код работал так, что если бы я мог заставить запрос показывать полные строки, то получил бы его правильно. У меня также был (NOLOCK) в каждой таблице, а затем я попытался удалить его, чтобы посмотреть, изменило ли это что-нибудь, но это не помогло.

Комментарии:

1. Используйте LEFT JOIN , чтобы не потерять ни одной строки.

2. Это сработало, теперь я получаю 62 строки. Большое вам спасибо

3. Для получения дополнительной информации о типах соединений взгляните на это