MySQL выборка c использованием Join

Рейтинг: 2Ответов: 1Опубликовано: 10.04.2011

Здравствуйте подскажите как правильно сформировать запрос .

Конструкция базы следующая

alt text
(источник: com.ua)

Нужно получить следующее

alt text
(источник: com.ua)

Вот чего я максимум добился

alt text
(источник: com.ua)

Мой запрос (в базе немного другие поля но суть , я думаю ясна)

select users.name, profile_values.uid, profile_values.fid, profile_values.value
from profile_values, users 
where profile_values.uid = users.uid  and  profile_values.fid = 13 
or profile_values.fid = 9 and profile_values.uid = users.uid 

Ответы

▲ 1Принят

Как вариант, если максимальное количество полей (значений fid) известно (и перечислимо):

select name, u.uid, v1, v2 from users as u
left join 
(select uid, value as v1 from profilevalues where profilevalues.fid=10) as v1t on u.uid=v1t.uid 
left join 
(select uid, value as v2 from profilevalues where profilevalues.fid=11) as v2t on u.uid=v2t.uid;

выбираются только поля с fid=10,11. Для остальных - добавьте vn и left join'ы по необходимости.

текст может содержать мелкие орфографические ошибки, так что копи-паст не приветствуется... но идея - проверена на мускуле.

PS. Возможно, существуют пути оптимизации запроса....