Я пытаюсь выяснить, как написать SQL-запрос, который возвращает результат двух других операторов SELECT, каждый из которых имеет свой собственный JOIN. Вот сценарий:Одиночный SELECT, объединяющий несколько JOINs
Таблица 1 может иметь значения NULL в столбцах T1Number и/или T1State. В таблице 2 могут быть строки с соответствующим числом или состоянием. Я хочу, чтобы все строки из таблицы 1, но хочу заполнить любой NULL T1Number T2Number, когда совпадают состояния, и заполнить любой NULL T1State T2State при совпадении чисел. Я не хочу, строки из Table2, которые не имеют состояние соответствия или номер:
Table1: Table2:
Name T1Number T1State T2Number T2State
---- -------- ------- -------- -----
Joe 1 NULL 1 MA
Bob NULL CA 2 CA
Dan NULL NULL 3 FL
Sam 4 NY 4 NY
Ray 5 TX 8 PA
Поэтому у меня есть один ЗЕЬЕСТ, чтобы получить номер:
SELECT
Table1.Name,
Table1.T1Number,
Table1.T1State,
Table2.T2Number,
Table2.T2State
FROM Table1
INNER JOIN Table2 ON Table2.T2State = Table1.T1State
WHERE (Table1.T1Number IS NULL OR Table1.T1State IS NULL)
Result:
Name T1Number T1State T2Number T2State
---- -------- ------- -------- -------
Bob NULL CA 2 CA
И еще ЗЕЬЕСТ, чтобы получить Государство:
SELECT
Table1.Name,
Table1.T1Number,
Table1.T1State
Table2.T2Number
Table2.T2State
FROM Table1
INNER JOIN Table2 ON Table2.T2Number = Table1.T1Number
WHERE (Table1.T1Number IS NULL OR Table1.T1State IS NULL)
Result:
Name T1Number T1State T2Number T2State
---- -------- ------- -------- -------
Joe 1 NULL 1 MA
Как написать комбинированный оператор SELECT, который дает мне следующий желаемый результат?
Name Number State
---- ------ -----
Joe 1 MA
Bob 2 CA
Dan NULL NULL
Sam 4 NY
Ray 5 TX
Я полагаю, мне нужен вмещающий ЗЕЬЕСТ, который делает LEFT JOIN между Table1 и объединением указанных запросов, но я знаю, что это намного легче, чем я делаю это. Спасибо заранее.
Отлично - это делает трюк. Спасибо за вашу помощь. – MasterOfNone