Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL left и inner join дают один результат  [new]
ALARMus
Member

Откуда:
Сообщений: 541
Здравствуйте.
Делая выборку столкнулся с такой непонятной для меня вещью:

Таблица 1 имеет порядка 19000 записей, желая вывести все строки из этой таблицы и для нее те значения, которые совпадают по ключевому полю с таблицей 2.
Ожидал получить в результате запроса тоже количество записей что и в таблице 1 (по крайней мере не меньше, т.к. во второй таблице может быть более одной записи подпадающей под условие on в join)
Но получаю почему-то порядка 800 записей (замена с left join на inner показала что результат не меняется).

Помогите разобраться в чем может быть дело.
9 окт 18, 08:39    [21698856]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL left и inner join дают один результат  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
ALARMus
Здравствуйте.
Делая выборку столкнулся с такой непонятной для меня вещью:

Таблица 1 имеет порядка 19000 записей, желая вывести все строки из этой таблицы и для нее те значения, которые совпадают по ключевому полю с таблицей 2.
Ожидал получить в результате запроса тоже количество записей что и в таблице 1 (по крайней мере не меньше, т.к. во второй таблице может быть более одной записи подпадающей под условие on в join)
Но получаю почему-то порядка 800 записей (замена с left join на inner показала что результат не меняется).

Помогите разобраться в чем может быть дело.


предлагаете лечить запор по фотографии?
запрос то где ваш?

ЗЫ. хрустальный шар подсказывает, что вы во where могли наложить фильтр на правую таблицу.
9 окт 18, 08:41    [21698857]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL left и inner join дают один результат  [new]
ALARMus
Member

Откуда:
Сообщений: 541
Посетитель,

Да есть where, в котором указано условие на "правую" таблицу.
9 окт 18, 09:20    [21698881]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL left и inner join дают один результат  [new]
L_argo
Member

Откуда:
Сообщений: 1209
ALARMus
Посетитель,

Да есть where, в котором указано условие на "правую" таблицу.
Так делать нельзя. Это условие должно быть в секции FROM -> ON.
9 окт 18, 09:29    [21698888]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL left и inner join дают один результат  [new]
londinium
Member

Откуда: Киев
Сообщений: 1168
ALARMus,

автор
Да есть where, в котором указано условие на "правую" таблицу.

Это автоматом превращает LEFT JOIN в INNER
9 окт 18, 09:36    [21698898]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL left и inner join дают один результат  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
L_argo
ALARMus
Посетитель,

Да есть where, в котором указано условие на "правую" таблицу.
Так делать нельзя. Это условие должно быть в секции FROM -> ON.


делать можно, если умеючи.
а если не умеючи - то просто не стоит удивляться результату.
9 окт 18, 09:36    [21698900]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL left и inner join дают один результат  [new]
ALARMus
Member

Откуда:
Сообщений: 541
L_argo,
спасибо, заменил where на ON and _условие на правую таблицу_
9 окт 18, 09:52    [21698919]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить