У меня есть Таблица1:
IdT1, IdT1Group
11, 30
12, 30
13, 30
Таблица 2:
IdT2, IdT1, подробности
2, 11, A
3, 11, B
4, 12, A
5, 12, B
Я ожидаю, что мой запрос будет:
IdT2, IdT1, Detail
2, 11, A
3, 11, B
2, 12, A
3, 12, B
NULL, 13,A
NULL, 13, B
Итак, я использую Cross Join:
SELECT table2.IdT2,
table1.IdT1, table2.Detail
FROM table2 CROSS JOIN table1
WHERE table2.IdT1 = 11 AND table1.IdT1Group = 30
Но после того, как я попробовал свой код, это было:
IdT2 IdT1 Detail
2 , 11 , A
3 , 11 , B
2 , 12 , A
3 , 12 , B
2 , 13 , A
3 , 13 , B
Вот как это должно быть:
IdT2, IdT1, Detail
2 , 11 , A
3 , 11 , B
2 , 12 , A
3 , 12 , B
NULL , 13 , A
NULL , 13 , B
Если я использую этот запрос:
SELECT T2.IdT2, tblJoin.IdT1, tblJoin.Detail
FROM Table2 AS T2 RIGHT JOIN
(SELECT Table2.IdT2,
Table1.IdT1, Table2.Detail
FROM Table2 CROSS JOIN Table1 WHERE Table2.IdT1 = 11 AND Table1.IdT1Group = 30
) AS tblJoin ON T2.IdT1 = tblJoin.IdT1 And T2.IdT2 = tblJoin.IdT2 ORDER BY IdT2
Результат будет:
IdT2, IdT1, деталь
NULL, 12, A
NULL, 12, B
NULL, 13, A
NULL, 13, B
2, 11, A
3, 11, B
, если данные в таблице 2:
IdT2, IdT1, Деталь
2, 11, А
3, 11, В
4, 11, С
5, 12, А
6, 12,B
, Данные выбора, которые я ожидаю, будут:
IdT2;IdT1;Деталь
2, 11, A
3, 11, B
4, 11, C
2, 12, A
3, 12, B
NULL, 12, C
NULL, 13, A
NULL, 13, B
NULL, 13, C