#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. Для получения дополнительной информации о типах соединений взгляните на это