Я думаю, этот вопрос очень близок к тому, что мне нужно, но я не смог его снять, чтобы получить необходимые мне данные.
У меня есть 4 набора данных:
TableA TableB TableC TableD
1 10 20 34
2 15 21
3 16
17
Я хочу иметь возможность получить каждую комбинацию, включая пустые строки, поэтому мой результат будет выглядеть так:
TableA_id TableB_id TableC_id TableD_id
1 NULL NULL NULL
1 10 NULL NULL
1 10 20 NULL
1 10 20 34
1 10 21 NULL
1 10 20 34
1 15 NULL NULL
1 15 20 NULL
1 15 20 34
1 15 21 NULL
1 15 21 34
... but then to also include ...
NULL 10 NULL NULL
NULL 10 20 NULL
NULL 10 20 34
NULL 10 21 NULL
NULL 10 21 34
...
NULL NULL NULL 34
Использование приведенного ниже CROSS JOIN
даст мне все полные комбинации, но чтобы получить частичные значения, единственное решение, которое я вижу, это UNION
отдельные запросы, каждый из которых возвращает мне все строки с одинарным / двойным / тройным значением.
SELECT TableA.id AS TableA_id, TableB.id AS TableB_id, TableC.id AS TableC_id, TableD.id AS TableD_id
FROM TableA CROSS JOIN
TableB CROSS JOIN
TableC CROSS JOIN
TableD