у меня есть две таблицы профиль и имя , таблица профиля содержит некоторые метаданные, относящиеся к пользователю. Таблица имен содержит все возможные имена, которые мог иметь профиль.
Я пытаюсь создать запрос MYSQL , который даст мне profile.age, заданное имя и фамилию для всех профилей, даже если у них нет заданного имени или фамилии
+-------+---------+ | ID | AGE | +-------+---------+ | 0 | 10 | | 1 | 20 | | 2 | 30 | | 3 | 40 | +-------+---------+
+------------+--------+--------+ | PROFILE_ID | TYPE | NAME | +------------+--------+--------+ | 0 | 0 | Jo | | 0 | 1 | Blog | | 1 | 0 | Jim | | 2 | 1 | Smith | +------------+--------+--------+ Type 0 = Given Name Type 1 = Family Name
Это запрос, который я использую в настоящее время.
SELECT given.name AS 'given_name', family.name AS 'family_name', profile.age
FROM profile
LEFT OUTER JOIN name given ON profile.id = given.profile_id
LEFT OUTER JOIN name family ON profile.id = family.profile_id
WHERE given.type = 0
AND profile_id.type = 1
LIMIT 0 , 30
Это результат, который я хочу и ожидаю получить
+------------+-------------+--------+ | GIVEN_NAME | FAMILY_NAME | ADE | +------------+-------------+--------+ | Jo | Blog | 10 | | Jim | NULL | 20 | | NULL | Smith | 30 | | NULL | NULL | 40 | +------------+-------------+--------+
Однако это то, что я получаю на самом деле
+------------+-------------+--------+ | GIVEN_NAME | FAMILY_NAME | AGE | +------------+-------------+--------+ | Jo | Blog | 10 | +------------+-------------+--------+
Насколько я понимаю, LEFT OUTER JOIN должен возвращать NULL-значение. . Что я делаю неправильно? Как мне изменить свой запрос, чтобы он возвращал NULL-значение joun?