MySQL: выбрать / объединить строки как имена полей - возможно ли это? - PullRequest
0 голосов
/ 03 января 2011

Я могу получить все имена столбцов из таблицы «категории» с помощью:

SELECT col.column_name
FROM information_schema.columns AS col
WHERE col.table_schema= database() and col.table_name = "categories"

Это дает такой набор результатов:

column_name       
-----------------
categoryID
name
description

Я могу получить все значения для определенной категориис:

SELECT * 
FROM categories AS c 
WHERE c.categoryID=12345

это приводит к результирующему набору, подобному следующему:

categoryID      | name     | description
------------------------------------------------
12345           | test     | this is a test

Теперь я хотел бы получить какое-то объединение вышеупомянутых выборок, чтобы получить набор результатов, который выглядит примерно так:

fieldname         | value
----------------------------------------
categoryID        | 12345
name              | test
description       | this is a test

Кто-нибудь знает, возможно ли это?Можете ли вы выполнить объединение строк из другого выбора ??

Причина в том, что я пишу универсальную хранимую процедуру, которая выводит все поля + их значения из таблицы, не зная, какие там полянаходятся в таблице.(Имя таблицы указывается в параметре)

1 Ответ

0 голосов
/ 04 января 2011

Вы пытаетесь выбрать значение поля, используя динамическое имя поля.Это не может быть сделано с помощью простого SQL и даже с помощью хранимой процедуры, вам все равно придется брать строки одну за другой, используя PREPARE STATEMENT.

Если вы используете консоль и хотите увидеть результатываш запрос красиво отображается попробуйте это:

SELECT * 
FROM categories AS c 
WHERE c.categoryID=12345 \G
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...