Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Преобразовать таблицу. (Александр) 24/04/2006 - 20:09:04



From: Александр - 24/04/2006 - 20:09:04
Subject:Преобразовать таблицу.
-----------------
Есть база данных вида:

mysql> show fields from VC_BW_VALUES;
+-----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| recordnum | int(11) | YES | MUL | NULL | |
| fieldnum | int(11) | YES | MUL | NULL | |
| value_c | char(32) | YES | | NULL | |
+-----------+----------+------+-----+---------+-------+
4 rows in set (0.02 sec)

mysql> show fields from VC_BW_GLOBAL_FIELDLIST;
+-------+--------------------+------+-----+---------+-----------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------+------+-----+---------+-----------+
| name | char(32) | YES | UNI | NULL | |
| num | int(11) | NO | PRI | NULL | ato_increment |
+-------+--------------------+------+-----+---------+----------------+

Для каждого recordnum в таблице существуют записи со всеми fieldnum. Как попроще преобразовать эту таблицу к виду
rownum : field1 : field2 : field3: ..... : fieldN

Т.е. для каждого rownum получить строку со значениями соответствующих полей. Список полей может быть подмножеством от общего набора полей, могут меняться столбцы, по которым происходит сортировка (вывод на web-морду).

Пока придумал что-то вроде:
select F1.recordnum, F1.value_c F1, F2.value_c F2, F3.value_c F3 from (SELECT recordnum, value_c FROM VC_BW_VALUES WHERE fieldnum=1) F1, (SELECT recordnum, value_c FROM VC_BW_VALUES WHERE fieldnum=2) F2, (SELECT recordnum, value_c FROM VC_BW_VALUES WHERE fieldnum=3) F3 WHERE F1.recordnum=F2.recordnum AND F1.recordnum=F3.recordnum AND F1.recordnum;

это генерить в скрипте и отдавать на выполнение. Работать будет, но может быть есть решение лучше?



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
27478



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |