Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите повернуть таблицу / 10 сообщений из 10, страница 1 из 1
12.09.2016, 08:48
    #39307363
av2222
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
Здравствуйте. Подскажите как сделать такую выборку:

Таблица 1 :


Таблица 2 :


На форуме удалось найти только http://www.sql.ru/forum/1054518/kak-perevernut-tablicu что не совсем подходит для моего случая.
Сложность в том что количество параметров в 1-й таблице, столбец "key" может меняться.
...
Рейтинг: 0 / 0
12.09.2016, 08:55
    #39307366
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
Вариант1. Воспользоваться сводными таблицами EXEL/
Вариант2. Долгий.
Определяешь кол-во "key"
Добавляешь соответствующие столбцы
Заполняешь их значениями.
Проводишь группировку по id
...
Рейтинг: 0 / 0
12.09.2016, 09:27
    #39307379
av2222
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
Подходит вариант 2 но не совсем понимаю как заполнить созданные столбцы значениями.
...
Рейтинг: 0 / 0
12.09.2016, 09:42
    #39307387
av2222
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
В каком направлении двигаться.
На ум приходит что-то типа этого:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
   Таблица_1.product_id,
   CASE Таблица_1.key WHEN 'Speed' THEN ____???___ END As 'Speed'
   CASE Таблица_1.key WHEN 'Diametr' THEN ____???___ END As 'Diametr' 
   ...
FROM
    `Таблица_1`
GROUP BY  Таблица_1.product_id



Подскажите с SQL запросом
...
Рейтинг: 0 / 0
12.09.2016, 09:55
    #39307403
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
av2222,

http://www.sql.ru/faq/faq_topic.aspx?fid=210
Только decode надо переписать через CASE, т.к. decode нет в MySQL.
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
   mytable.product_id,
   MIN(CASE mytable.key WHEN 'Speed' THEN mytable.key END) As 'Speed',
   MIN(CASE mytable.key WHEN 'Diametr' THEN mytable.key END) As 'Diametr' 
   ...
FROM mytable
GROUP BY  mytable.product_id
...
Рейтинг: 0 / 0
12.09.2016, 09:57
    #39307404
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
av2222На ум приходит что-то типа этого:Просто CASE не сработает - он общается только с одной записью, а не с группой. Используй, например
Код: sql
1.
MAX(CASE Таблица_1.key WHEN 'Speed' THEN value END) As `Speed`
...
Рейтинг: 0 / 0
12.09.2016, 10:10
    #39307410
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
Akina
Код: sql
1.
THEN value

Да, точно, value. В предыдущем посте я напутал при копипасте.
...
Рейтинг: 0 / 0
12.09.2016, 10:23
    #39307418
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
av2222,
зря ты это вообще затеял.
нормального pivot в MySQL нет, а на клиенте это делается достаточно легко.
...
Рейтинг: 0 / 0
12.09.2016, 11:21
    #39307464
av2222
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
Спасибо коллеги. Все получилось.

Код: sql
1.
2.
3.
4.
5.
6.
SELECT Таблица_1.product_id, 
	MAX( CASE Таблица_1.key WHEN  'Speed' THEN value END ) AS  'Speed',
	MAX( CASE Таблица_1.key WHEN  'Diametr' THEN value END ) AS  'Diametr'
        ...
FROM Таблица_1
GROUP BY Таблица_1.product_id
...
Рейтинг: 0 / 0
12.09.2016, 15:56
    #39307723
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите повернуть таблицу
Это в случае если key определены.
А я так понял, что ни они сами, ни их итоговое количество неизвестно.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите повернуть таблицу / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]