Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Транспонирование таблиц

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Необходимо вывести результат столбца по разным ячейкам таблицы
Tatyanko_O
Отправлено: 06 Марта, 2012 - 15:27:53
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




Здравствуйте!
Посоветуйте, пожалуйста, с помощью каких средств лучше реализовать следующий вывод:

Имеется таблица tblocenki со следующей структурой:
Predmet | Ocenka | Chetvert
Russkiy | otlichno | pervaya
Literatur| otlichno | pervaya
Russkiy | horosho | vtoraya
Matemat| horosho | vtoraya

На php необходимо вывести следующую таблицу:
Предмет|1четверть|2четверть
Russkiy | otlichno | horosho
Literatur| otlichno |.............
Matemat| .......... | horosho
Читаю, про PIVOT, но не уверена, что именно это мне нужно... Запуталась. Очень надеюсь на ваши советы! Заранее спасибо!
 
 Top
Tatyanko_O
Отправлено: 07 Марта, 2012 - 09:46:03
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




Пришлось организовать вывод, используя массивы. Благо, таблица небольшая... Но все-таки разобраться как правильнее решить подобную задачу хотелось бы.
 
 Top
Hidalgo
Отправлено: 07 Марта, 2012 - 09:48:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Февр. 2012  
Откуда: Димитровград


Помог: 1 раз(а)




Tatyanko_O пишет:
Пришлось организовать вывод, используя массивы. Благо, таблица небольшая... Но все-таки разобраться как правильнее решить подобную задачу хотелось бы.

для начала нужно лучше продумать и правильно организовать структуру таблицы в БД
 
 Top
Champion Супермодератор
Отправлено: 07 Марта, 2012 - 11:11:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Tatyanko_O пишет:
Читаю, про PIVOT, но не уверена, что именно это мне нужно.
PIVOT есть не везде. Если речь о MySQL, то в нем нету пивота.
Вообще pivot легко заменяется на case + group by.

В частности здесь скорее всего нужна такая вещь:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT cetvert, avg(ocenka), pregmet
  2. FROM hhh
  3. GROUP BY cetvert,predmet

(Добавление)
Аа, я не правильно на результат посмотрел.
Вот универсальный вариант:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT predmet,
  2. min(case when cetvert = 1 then ocenka end) c1,
  3. min(case when cetvert = 2 then ocenka end) c2,
  4. min(case when cetvert = 3 then ocenka end) c3,
  5. min(case when cetvert = 4 then ocenka end) c4
  6. FROM hhh
  7. GROUP BY predmet

(Добавление)
Или вариант с пивотом:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT predmet, [1], [2], [3]
  2. FROM hhhh
  3. PIVOT (
  4.     MIN(ocenka)
  5.     FOR cetvert IN([1], [2], [3])
  6. ) pivoTable
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB