Forum Webscript.Ru

Общие => Базы данных => Тема начата: Kouz от 12 Ноября 2005, 03:58:15

Название: Перевернуть таблицу
Отправлено: Kouz от 12 Ноября 2005, 03:58:15
Нужно в MySQL "перевернуть" таблицу по диагонали.

Например есть таблица со статистикой по сисадминам :beer:

имя     год     пропил
------  ------  ------
вася    2003    220
вася    2004    580
вася    2005    400
коля    2003    900
коля    2004    760
коля    2005    500

как написть select, чтобы получить

имя    2003   2004   2005
-----  -----  -----  ------
вася   220    580    400
коля   900    760    500

при условии, что заранее не известно в какие года сисадмины пьянствовали, т.е. в select нельзя использовать \'2002\', \'2003\' и \'2004\'.
Название: Перевернуть таблицу
Отправлено: commander от 14 Ноября 2005, 10:33:06
Kouz
а средствани приложения решить эту проблемму неа?
т.е.
1 запрос + 1 запрос в цикле...
Название: Перевернуть таблицу
Отправлено: hanslinger от 14 Ноября 2005, 10:38:48
а если что-то вроде GROUP BY year, name?
Название: Перевернуть таблицу
Отправлено: commander от 14 Ноября 2005, 13:32:21
hanslinger
Цитировать
а если что-то вроде GROUP BY year, name?


ещё раз хорошо подумай...
Название: Перевернуть таблицу
Отправлено: hanslinger от 14 Ноября 2005, 14:40:04
Цитировать
ещё раз хорошо подумай...

Ну и что?
SELECT * FROM `table` GROUP BY `name`, `year`;
Выдает сгруппированные значения. Думаю, что это ему и надо было. Если нет - то только приложением, хотя в этом случае задача мне вообще не ясна.
Название: Перевернуть таблицу
Отправлено: Kouz от 14 Ноября 2005, 18:37:14
Цитировать
commander:
а средствани приложения решить эту проблемму неа?
т.е.
1 запрос + 1 запрос в цикле...


Приложение в данном случае - Excel. Передаем данные через ODBC. То есть все нужно решать средствами sql запроса.

В MySQL 5 появились stored procedure которыми я раньше никогда не прользовался. Насколько я понимаю задачу можно решить написав stored procedure.

Есть ли ссылки на курс молодого боца по stored procedure в MySQL, желательно с примерами?
Название: Перевернуть таблицу
Отправлено: Kouz от 15 Ноября 2005, 05:24:30
вот здесь есть stored procedure для MS SQL которая делает то, что мне нужно.

http://www.sqlteam.com/item.asp?ItemID=2955 (http://www.sqlteam.com/item.asp?ItemID=2955)

как бы такое в MySQL сообразить?
Название: Перевернуть таблицу
Отправлено: NeoNox от 15 Ноября 2005, 12:25:07
хранимые процедуры в MySQL 5.0, коротко и доступно в двух словах:
http://www.databasejournal.com/features/mysql/article.php/10897_3525581 http://www.databasejournal.com/features/mysql/article.php/3547931
Название: Перевернуть таблицу
Отправлено: commander от 15 Ноября 2005, 13:17:16
NeoNox
коротковато... :(

Kouz
тут получше будет:
http://dev.mysql.com/doc/refman/5.1/en/stored-procedures.html

даже есть русская версия, но только для 4 версии...:
http://dev.mysql.com/doc/refman/4.0/ru/extending-mysql.html