MySQL возвращает несколько строк в виде столбцов - PullRequest
2 голосов
/ 11 августа 2011

Я немного устала от SQL, у меня есть одна простая таблица

col1        col2        col3        col4
ident1      name1       data1       data3
ident2      name1       data8       data7
ident3      name1       data3       data8
...
ident1      name2       data4       data1
ident2      name2       data2       data5
ident3      name2       data6       data3
...

и я хочу получить несколько столбцов таким образом

        ident1  ident1  ident2  ident2  ident3  ident3 ...
name1   data1   data3   data8   data7   ...
name2   data4   data1   data2   data5   ...
name3   ....
...

Обратите внимание, что это не то же самое, что MySQL: возвращение нескольких столбцов из встроенного подзапроса , поскольку у меня есть только одна таблица, и я хочу отобразить первый столбец как первую строку в результатах.

Я читал, что это возможно с подзапросами типа SELECT ... WHERE (col3, col4) IN (SELECT col3, col4 ...), но я получаю ошибку, как Неизвестный столбец col3 в 'IN / ALL / ЛЮБОЙ подзапрос », и я не могу понять, как получить имена столбцов в первой строке в результатах и ​​как использовать group by для добавления столбцов. Любая помощь?

1 Ответ

1 голос
/ 11 августа 2011

Похоже, MDX . Это потрясающе. Но это не так. Но они существуют, потому что SQL (во всех разновидностях) это просто плохо на данный момент. (Это также может быть случай, когда вам нужно переосмыслить свою схему).

Лично? Я бы сделал это как серию запросов и ассоциативных массивов (псевдокод следует).

select col1 from table -> iterate through result adding two copies of each to 
                          keys of an associative array

select col1, col2, col3, col4 from table -> output name. while name = first
                                            name output col3 then col4

Ваш другой вариант, насколько я могу судить, на самом деле должен выполняться в динамическом sql (с помощью оператора PREPARE и т.

...