MySQL double LEFT OUTER JOIN

В

у меня есть две таблицы профиль и имя , таблица профиля содержит некоторые метаданные, относящиеся к пользователю. Таблица имен содержит все возможные имена, которые мог иметь профиль.

Я пытаюсь создать запрос 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?

5
задан Michał Powaga 18 January 2012 в 12:36
поделиться