2013-03-03 3 views
11

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

ID | a | b | c 
1 | a1 | b1 | c1 
2 | a2 | b2 | c2 

По какой-то причине (на самом деле присоединиться на другая таблица - на основе ID, но я думаю, что если кто-то может помочь мне с этой стороны, я могу сделать сам отдых), мне нужно эти строки, чтобы быть, как это вместо:

1 | a1 | a 
1 | b1 | b 
1 | c1 | c 
2 | a2 | a 
2 | b2 | b 
2 | c2 | c 

Так в основном, мне нужно для просмотра строк: ID, columntitle, value Есть ли способ сделать это легко?

+0

вы имели в виду 'ID, значение, columntitle'? –

+0

Да, но порядок не имеет особого значения, если строки - ID - название столбца - значение – user2128539

ответ

3

Попробуйте использовать UNION ALL.

SELECT ID, a, 'a' 
FROM tbl 
WHERE ID = 1 
UNION 
SELECT ID, b, 'b' 
FROM tbl 
WHERE ID = 2 
17

Вы пытаетесь UNPIVOT данных. MySQL не имеет UNPIVOT функции, так что вам придется использовать UNION ALL запрос для преобразования столбцов в строки:

select id, 'a' col, a value 
from yourtable 
union all 
select id, 'b' col, b value 
from yourtable 
union all 
select id, 'c' col, c value 
from yourtable 

См SQL Fiddle with Demo.

Это также может быть сделано с помощью CROSS JOIN:

select t.id, 
    c.col, 
    case c.col 
    when 'a' then a 
    when 'b' then b 
    when 'c' then c 
    end as data 
from yourtable t 
cross join 
(
    select 'a' as col 
    union all select 'b' 
    union all select 'c' 
) c 

См SQL Fiddle with Demo

+1

Спасибо. Так что, похоже, в конце концов не было более короткого пути (это довольно много столбцов, я думал, что будет проще, чем «выбрать ... из ...» для каждого столбца. – user2128539

+0

@ user2128539 см. Мое редактирование , Я включил другой способ отказа от данных. – Taryn

Смежные вопросы