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

Откуда: Алма-Ата, Казахстан
Сообщений: 1369
Добрый день!

Тыщу лет не писал запросы, возникла надобность, и понимаю, что забыл то малое, что знал.

Есть две таблицы:
Persons и Clockings

Persons:
Person_id PK
Person_name
Person_card

Clockings:
Clocking_id PK
Person_card
Timedata


Запрос:

Declare @SD smalldatetime, @ED smalldatetime
set @SD = '2016-10-03'
set @SD = '2016-10-04'
Select Person_ID, Person_name, Timedata from Persons inner join Clockings on
Persons.Person_card = Clockings.Person_card
where Timedata between @SD and @ED

выдает

2Иванов2016-10-03 10:00
7Петров2016-10-03 10:20
7Петров2016-10-03 16:40
2Иванов2016-10-03 17:00


Запрос
Declare @SD smalldatetime, @ED smalldatetime
set @SD = '2016-10-03'
set @SD = '2016-10-04'
Select Person_ID, Person_name, Timedata from Persons left outer join Clockings on
Persons.Person_card = Clockings.Person_card
where Timedata between @SD and @ED


выдает тот же результат.

Но в таблице Persons есть еще запись.

То есть, по моему разумению, второй запрос должен выдавать что-то вроде

2Иванов2016-10-03 10:00
7Петров2016-10-03 10:20
7Петров2016-10-03 16:40
2Иванов2016-10-03 17:00
3СидоровNULL


Или я не прав?
14 мар 17, 13:52    [20293384]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли не отрабатывает LEFT JOIN?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
funddd,

Timedata between @SD and @ED в ON уберите
14 мар 17, 13:53    [20293388]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли не отрабатывает LEFT JOIN?  [new]
o-o
Guest
по правой таблице фильтруете, превращая left в inner.
засуньте условие where в условие on
14 мар 17, 13:54    [20293393]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли не отрабатывает LEFT JOIN?  [new]
funddd
Member

Откуда: Алма-Ата, Казахстан
Сообщений: 1369
Тьфу!
Спасибо!
Насколько я помню (2000), отбор в соединениях не есть правильно, лучше добваить "Or TimeData is NULL"

Или теперь уже все равно?
14 мар 17, 13:55    [20293394]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли не отрабатывает LEFT JOIN?  [new]
funddd
Member

Откуда: Алма-Ата, Казахстан
Сообщений: 1369
Проверил, понял что облажался
14 мар 17, 13:58    [20293412]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить