現時点では、おそらくあまり明確なことはわかりませんが、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
これを簡単に行う方法はありますか?
データをピボット解除しようとしています。 MySQLにはピボット解除関数がないため、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 を参照してください
NION ALL を使用してみてください。
SELECT ID, a, 'a'
FROM tbl
WHERE ID = 1
UNION
SELECT ID, b, 'b'
FROM tbl
WHERE ID = 2