Здравствуйте, rebuy, Вы писали:
R>R>SELECT
R> identities_contact.`name` AS `ФИО`,
R> identities_contacttype.`name` AS `Тип`,
R> identities_contactfield.label AS `Параметр`,
R> identities_contactvalue.`value` AS `Значение`
R>FROM
R> identities_contact
R>INNER JOIN identities_contacttype ON identities_contacttype.object_ptr_id = identities_contact.contact_type_id
R>INNER JOIN identities_contacttype_fields ON identities_contacttype.object_ptr_id = identities_contacttype_fields.contacttype_id
R>INNER JOIN identities_contactfield ON identities_contactfield.object_ptr_id = identities_contacttype_fields.contactfield_id
R>INNER JOIN identities_contactvalue ON identities_contact.object_ptr_id = identities_contactvalue.contact_id
R>WHERE
R> identities_contact.related_user_id IS NULL
R>GROUP BY identities_contactvalue.`value`
1. У вас лишний group by. Откуда он взялся? У вас в запросе нет ни одной агрегатной функции.
2. У вас нет джойна между identities_contactvalue и identities_contactfield - как же вы значения привяжете к полям?
Вроде бы, запрос должен быть таким:
[sql]
ELECT
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 and identities_contactvalue.field_id = identities_contactfield.object_ptr_id
WHERE
identities_contact.related_user_id IS NULL
Вообще, identities_contacttype_fields джойнить не обязательно — если данные соответствуют схеме, то в identities_contactvalue и так не будет "лишних" данных:
ELECT
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_contactvalue ON identities_contact.object_ptr_id = identities_contactvalue.contact_id
INNER JOIN identities_contactfield ON and identities_contactvalue.field_id = identities_contactfield.object_ptr_id
WHERE
identities_contact.related_user_id IS NULL