В
У меня есть две таблицы profile и name , таблица профиля содержит некоторые метаданные, относящиеся к пользователю. Таблица имен содержит все возможные имена, которые может иметь профиль.
Я пытаюсь создать запрос 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
Quert
Это запрос, который я сейчас использую.
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?