Я чувствую, что на этот вопрос уже где-то ответили, но мои поиски не нашли ничего уместного Если кто-либо может дать ссылку на другой ответ, я могу принять это помеченное как дубликат и закрытое.
У меня есть три таких таблицы:
users(id)
things1(id, user_id, thing1_text)
things2(id, user_id, thing2_text)
Для целей данного примера предположим, что в таблице users
есть только один пользователь с id
из 1
.
Допустим, things1
выглядит так:
id
1
2
user_id
1
1
thing1_text
im a thing 1
im a thing 1 too
А вещи2 выглядят так:
id
1
2
user_id
1
1
thing2_text
im a thing 2
im a thing 2 too
Я пытаюсь создать запрос, который будет возвращать это:
user_id
1
1
1
1
thing1_text
im a thing 1
im a thing 1 too
NULL
NULL
thing2_text
NULL
NULL
im a thing 2
im a thing 2 too
Моя первая, по общему признанию, наивная попытка выглядела так:
select users.id as user_id
, things1.thing1_text
, things2.thing2_text
from users
full outer join things1
on things1.user_id = users.id
full outer join things2
on things2.user_id = users.id;
Однако это не помещает NULL
ни в одно из полей и вместо этого объединяет их все - что, я уверен, более склонный к SQL среди вас, вероятно, понял, когда вы читали запрос: D
Во всяком случае. Это где я нахожусь. Любая помощь будет принята с благодарностью.