MySQL: значение как название столбца

sidorka
На сайте с 17.08.2012
Offline
211
1310

Можно ли не выходя за рамки мускула реализовать запрос, возвращающий значение поля как название столбца?

Исходная таблица

----------------------

| id | name | value |
======================
| 1 | vasya | gad |
| 2 | petya | kozel |
| 3 | kolya | durak |
----------------------

Нужный результат

-------------------------

| vasya | petya | kolya |
=========================
| gad | kozel | durak |
-------------------------
Дешевые домены для дорвеев и не только - от 55р (https://goo.gl/Wtnwqp)
edogs software
На сайте с 15.12.2005
Offline
775
#1

Задача абсурдная в своей постановке.

Не выходя за рамки мускула в результатах запроса вообще нет такого понятия как название столбца, там все данные одинаковы - просто данные.

Если Вы хотите что бы первой строкой вернулись все name , а во второй все value, то у постановки задачи появляется хоть какой-то смысл, но сама задача все равно абстрактная и теоретическая - если такое вдруг понадобилось сделать внутри мускула, значит у Вас что-то сильно не так в Вашем проекте.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
sidorka
На сайте с 17.08.2012
Offline
211
#2

Почему же абсурдная? Опции настроек, например...

Если Вы хотите что бы первой строкой вернулись все name , а во второй все value, то у постановки задачи появляется хоть какой-то смысл

Вы неправильно поняли условие, на самом деле. Поэтому и кажется задача глупой.

| vasya | petya | kolya | - это названия столбцов в ответе на запрос, т.е. стобец vasya = gad, столбец petya = kozel, а столбец kolya = durak. В исходной таблице названия столбцов - это значения name, результаты - value.

Понятно, что можно и по другому исходную таблицу построить, добавляя-удаляя по мере необходимости нужные поля с через ALTER.

edogs software
На сайте с 15.12.2005
Offline
775
#3
sidorka:
Почему же абсурдная? Опции настроек, например...

Опции настроек "не выходя за рамки мускула"© ? Абсурдна втройне или мы что-то упустили и теперь "внутри мускула" можно апач настроить?:)

sidorka:
Вы неправильно поняли условие, на самом деле. Поэтому и кажется задача глупой.

Глупой она не кажется, она абсурдна.

sidorka:
| vasya | petya | kolya | - это названия столбцов в ответе на запрос, т.е. стобец vasya = gad, столбец petya = kozel, а столбец kolya = durak. В исходной таблице названия столбцов - это значения name, результаты - value.

Не выходя за рамки мускула в результатах запроса вообще нет такого понятия как название столбца, там все данные одинаковы - просто данные.

Если же Вам эти данные нужно за рамками мускула все же использовать, то есть куда как более стандартное (на php допустим) $settings[$r['name']]=$r['value']; в цикле и всего делов. Будет у Вас массив settings с данными типа settings['vasya']='gad' и все такое

sidorka:
Понятно, что можно и по другому исходную таблицу построить, добавляя-удаляя по мере необходимости нужные поля с через ALTER.

Абсурд. Данные надо хранить в полях таблицы, а не в самой структуре.

L
На сайте с 07.12.2007
Offline
351
#4
sidorka:
Можно ли не выходя за рамки мускула реализовать запрос, возвращающий значение поля как название столбца?

Чисто с академической точки зрения - можно в некоторых случаях, это называется транспонирование таблицы.

CP
На сайте с 12.08.2009
Offline
101
#5

Можно попробовать noSql базы, к примеру MongoDB, она бесструктурная, полная свобода для работы с данными.

Профессиональный frontend: JS, html,css, Single-Page App (/ru/forum/964386)
sidorka
На сайте с 17.08.2012
Offline
211
#6

edogs, совершенно абсурдные ответы не в тему непонятно зачем. По сути-то есть что сказать? Я пока кроме как через временные таблицы вариантов не вижу других. Может можно и проще как-то. В ином случае лучше за мускулом обработать результат.

---------- Добавлено 22.04.2016 в 03:24 ----------

Ladycharm, во второй ссылке там жесткая привязка. Нужен именно случай заранее неизвестного количества строк в исходной таблице.

Я решение видел уже раньше, только давно уже. Вроде как в SimpleTDS что-то похожее реализовано с настройками. Завтра уже поищу исходники.

edogs software
На сайте с 15.12.2005
Offline
775
#7
sidorka:
edogs, совершенно абсурдные ответы не в тему непонятно зачем. По сути-то есть что сказать?

Конкретное решение можно подсказать лишь зная какую задачу Вы хотите решить. Перевернуть таблицу просто ради того что бы перевернуть таблицу это абстракция. Но в принципе если у Вас мускул старше 5-ки, то хранимые процедуры в помощь, на них задача решаема, создаете таблицу исходя из выбранных полей по их шаблону, потом подгружаете в нее данные.

Если же Вам нужно решить какую-то прикладную задачу, например, выбрать в массив настройки, то это превосходно делается прямо и тупо - выборкой данных в массив, не надо усложнять.

sidorka:
лучше за мускулом обработать результат.

Так о чем и речь.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий