MySQL помогите разобраться с множественным INNER JOIN
От: rebuy  
Дата: 16.11.14 11:19
Оценка:
MySQL помогите разобраться с множественным INNER JOIN:
Структура БД и схема запроса:





SELECT
    identities_contact.`name` AS `ФИО`,
    identities_contacttype.`name` AS `Тип`,
    identities_contactfield.label AS `Параметр`,
    identities_contactvalue.`value` AS `Значение`
FROM
    identities_contact
INNER JOIN identities_contacttype ON identities_contacttype.object_ptr_id = identities_contact.contact_type_id
INNER JOIN identities_contacttype_fields ON identities_contacttype.object_ptr_id = identities_contacttype_fields.contacttype_id
INNER JOIN identities_contactfield ON identities_contactfield.object_ptr_id = identities_contacttype_fields.contactfield_id
INNER JOIN identities_contactvalue ON identities_contact.object_ptr_id = identities_contactvalue.contact_id
WHERE
    identities_contact.related_user_id IS NULL
GROUP BY identities_contactvalue.`value`

Возвращает:
Company    Company    Address    
Ольга Тадеушевна Павловская    Person    Address    +37544111111
Евгений Трошкин    Person    Address    +3754434445554
Иванов Иван Иванович    Person    Address    +3754411111111
Евгений Трошкин    Person    Address    jjoloka@gmail.com
Иванов Иван Иванович    Person    Address    В. Гостинец, 100
Ольга Тадеушевна Павловская    Person    Address    ул. В. Гостинец
Евгений Трошкин    Person    Address    ул. Малинина 7

Должно возвращать:
Company    Company    Address    
Ольга Тадеушевна Павловская    Person    Phone +37544111111
Евгений Трошкин    Person    Phone +3754434445554
Иванов Иван Иванович    Person    Phone    +375445866777
Евгений Трошкин    Person    Mail    jjoloka@gmail.com
Иванов Иван Иванович    Person    Address    В. Гостинец, 124,26
Ольга Тадеушевна Павловская    Person    Address    ул. В. Гостинец
Евгений Трошкин    Person    Address    ул. Малинина 7



Тестовые данные для таблиц:
identities_contact:
24    21    Company        1
78    23    Иванов        Null

identities_contactvalue:
11    16    78    ул.Мира 1 
18    18    78    123456789

identities_contactfield:
16    phone    АДРЕС    phone    0    
18    phone    ТЕЛЕФОН    phone    0

identities_contacttype:    
23    Person    person    персональный

identities_contacttype_fields: (таблица для связывания групп полей и типов контактов)
9    22    19
10    23    16
11    23    17
12    23    18
13    23    19
14    23    20
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.