Автор Тема: Перевернуть таблицу  (Прочитано 6778 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kouz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Перевернуть таблицу
« : 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\'.
« Последнее редактирование: 12 Ноября 2005, 04:12:51 от Kouz »

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Перевернуть таблицу
« Ответ #1 : 14 Ноября 2005, 10:33:06 »
Kouz
а средствани приложения решить эту проблемму неа?
т.е.
1 запрос + 1 запрос в цикле...
And no religion too...

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Перевернуть таблицу
« Ответ #2 : 14 Ноября 2005, 10:38:48 »
а если что-то вроде GROUP BY year, name?

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Перевернуть таблицу
« Ответ #3 : 14 Ноября 2005, 13:32:21 »
hanslinger
Цитировать
а если что-то вроде GROUP BY year, name?


ещё раз хорошо подумай...
And no religion too...

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Перевернуть таблицу
« Ответ #4 : 14 Ноября 2005, 14:40:04 »
Цитировать
ещё раз хорошо подумай...

Ну и что?
SELECT * FROM `table` GROUP BY `name`, `year`;
Выдает сгруппированные значения. Думаю, что это ему и надо было. Если нет - то только приложением, хотя в этом случае задача мне вообще не ясна.

Оффлайн Kouz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Перевернуть таблицу
« Ответ #5 : 14 Ноября 2005, 18:37:14 »
Цитировать
commander:
а средствани приложения решить эту проблемму неа?
т.е.
1 запрос + 1 запрос в цикле...


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

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

Есть ли ссылки на курс молодого боца по stored procedure в MySQL, желательно с примерами?

Оффлайн Kouz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Перевернуть таблицу
« Ответ #6 : 15 Ноября 2005, 05:24:30 »
вот здесь есть stored procedure для MS SQL которая делает то, что мне нужно.

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

как бы такое в MySQL сообразить?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Перевернуть таблицу
« Ответ #7 : 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
The documentations is your friend

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Перевернуть таблицу
« Ответ #8 : 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
And no religion too...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28