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

Таблица 1 :


Таблица 2 :


На форуме удалось найти только http://www.sql.ru/forum/1054518/kak-perevernut-tablicu что не совсем подходит для моего случая.
Сложность в том что количество параметров в 1-й таблице, столбец "key" может меняться.
...
Рейтинг: 0 / 0
Помогите повернуть таблицу
    #39307366
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант1. Воспользоваться сводными таблицами EXEL/
Вариант2. Долгий.
Определяешь кол-во "key"
Добавляешь соответствующие столбцы
Заполняешь их значениями.
Проводишь группировку по id
...
Рейтинг: 0 / 0
Помогите повернуть таблицу
    #39307379
av2222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подходит вариант 2 но не совсем понимаю как заполнить созданные столбцы значениями.
...
Рейтинг: 0 / 0
Помогите повернуть таблицу
    #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
Помогите повернуть таблицу
    #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
Помогите повернуть таблицу
    #39307404
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
av2222На ум приходит что-то типа этого:Просто CASE не сработает - он общается только с одной записью, а не с группой. Используй, например
Код: sql
1.
MAX(CASE Таблица_1.key WHEN 'Speed' THEN value END) As `Speed`
...
Рейтинг: 0 / 0
Помогите повернуть таблицу
    #39307410
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Код: sql
1.
THEN value

Да, точно, value. В предыдущем посте я напутал при копипасте.
...
Рейтинг: 0 / 0
Помогите повернуть таблицу
    #39307418
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
av2222,
зря ты это вообще затеял.
нормального pivot в MySQL нет, а на клиенте это делается достаточно легко.
...
Рейтинг: 0 / 0
Помогите повернуть таблицу
    #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
Помогите повернуть таблицу
    #39307723
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это в случае если key определены.
А я так понял, что ни они сами, ни их итоговое количество неизвестно.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите повернуть таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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