MSSQL Показать строки со значением NULL в запросе с предложением Where - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть две таблицы.

tbl1 выглядит так:

CODE    Role    Sequence
0001    Role1   1
0002    Role2   2
0003    Role3   3
0004    Role4   4
0005    Role5   5

tbl2 выглядит так:

Code    RoleCode    User    DateFrom    DateTo
00002   0001        Usr1    2019-11-09  9998-12-31
00002   0002        Usr2    2019-11-09  9998-12-31

Я хочу присоединитьсявот что я уже сделал:

tbl1.Code   tbl1.Role   tbl2.User   tbl2.DateFrom   tbl2.DateTo
0001        Role1       Usr1        2019-11-09      9998-12-31
0002        Role2       User2       2019-11-09      9998-12-31
0003        Role3       NULL        NULL            NULL
0004        Role4       NULL        NULL            NULL
0005        Role5       NULL        NULL            NULL

Выполнив этот запрос:

SELECT  tbl1.Code,
        tbl1.Role,
        tbl2.User,
        tbl2.DateFrom,
        tbl2.DateTo
FROM tbl1
LEFT JOIN tbl2
    ON tbl1.Code = tbl2.RoleCode

Вопрос: Как я могу показать все строки tbl1, когда я ставлюпредложение в моем запросе, как это:

SELECT  tbl1.Code,
        tbl1.Role,
        tbl2.User,
        tbl2.DateFrom,
        tbl2.DateTo
FROM tbl1
LEFT JOIN tbl2
    ON tbl1.Code = tbl2.RoleCode
WHERE tbl2.Code = '00002'

1 Ответ

1 голос
/ 09 ноября 2019

Помещение условия в таблицу left join ed в предложении where неявно превращает его в inner join и, следовательно, удаляет все записи, для которых left join не соответствует в наборе результатов.

Необходимо поместить условие в таблицу left join ed в предложении on join:

SELECT  tbl1.Code,
        tbl1.Role,
        tbl2.User,
        tbl2.DateFrom,
        tbl2.DateTo
FROM tbl1
LEFT JOIN tbl2
    ON tbl1.Code = tbl2.RoleCode AND tbl2.Code = '00002'
...