Замена названия поля значением

shureen

Милорд Лось Кристофер
Замена названия поля значением

Здравствуйте! Может быть идея бредовая, но всё же...
Есть таблица (fields)

itemId | itemIdent | itemValue
1 | name | Михаил
1 | city | Казань
1 | country | Россия
2 | name | Миша
2 | phone | 2222222

хочу одним запросом получить такую вот табличку
name | city | country | phone
Михаил | Казань | Россия | NULL
Миша | NULL | NULL | 2222222

Никак не могу сообразить как автоматом сделать что - то такое:
[sql]SELECT (SELECT CONCAT("fieldValue as ",fieldIdent) FROM `fields` WHERE itemId = f.itemId) as names from `fields` as f GROUP BY itemId[/sql]

Подскажите кто знает... Заранее брагодарен!
 

Dl

Новичок
Если столбцов фиксированное количество, то можно использовать CASE + GROUP BY
 

x-yuri

Новичок
ну я придумал, в общем-то, да только может тут со структурой бд что-то сделать надо, если такие запросы нужны
Код:
SELECT t_1.id, name, city...
FROM
  (SELECT DISTINCT id FROM t) t_1
  LEFT JOIN 
    (SELECT id, v name FROM t WHERE n = 'name') t_2 
      ON t_1.id = t_2.id
  LEFT JOIN
    (SELECT id, v city FROM t WHERE n = 'city') t_3 
      ON t_1.id = t_3.id
...
p.s. а как тут CASE + GROUP BY помочь может?
 

Dl

Новичок
SELECT
MAX(CASE `itemIdent` WHEN 'name' THEN `itemValue` ELSE NULL END) `name`,
MAX(CASE `itemIdent` WHEN 'city' THEN `itemValue` ELSE NULL END) `city`,
...
FROM `fields`
GROUP BY `itemId`
 

Dl

Новичок
На мой взгляд дурацкий не вопрос, а структура данных
 

Фанат

oncle terrible
Команда форума
А вопрос, видимо, продиктован не структурой данных, а сакральными практиками.

То-то я смотрю, тебе структура данных понравилась. Аж землю роешь от усердия.
 

iceman

говнокодер
Если столбцов фиксированное кол-во, то зачем использовать такую структуру...
 

antson

Новичок
Партнер клуба
shureen
неудачная идея в плане производительности, но Вы тут даже неоригинальны, в 1с чтото похожее уже реализовали
 

Alexandre

PHPПенсионер
в 1с чтото похожее уже реализовали
в 1C известные говнокодеры
хотя менеджменту 1С даю дань уважения
структуры 1С пошли со времен DBase-4
говноструктуры из-за стремления универсальности, непродуманности и прочих неизвестных факторов
 

shureen

Милорд Лось Кристофер
да мне делать нефиг было и бошку такая мысль пришла. Т.е. смысл идеи был, что есть 2 таблицы:
1) items
id | фиксированные поля... (типа там дата создания и тд)
и таблица полей:
2) items_fields
itemId | fieldIdent | fieldValue

т.е. смысл такой что у каждой записи из items может быть может быть сколько угодно записей в items_fields. И хотелось одним запросом получить новую таблицу, где к items добавляются столбцы с именем fieldIdent с значением fieldValue при условие что items.id = items_fields.itemId.

Я не спорю что тупость... Интересно просто.
 
Сверху