私はこのような複数のテーブルを持っています:
'where table1.id = 1'を使用すると、図のような結果が必要です。
table2は、ストア値と列名のキーです。
table3は、表示する必要のあるストア列の名前です
結果は次のようになります
ID | Name | A | B | C
1 | a | 10 | 20 | 30
あなたJOIN
は条件付きの集約で少し必要です:
select t1.id, t1.name,
sum(case when t3.name = 'a' then t2.value else 0 end) as A,
sum(case when t3.name = 'b' then t2.value else 0 end) as B,
sum(case when t3.name = 'c' then t2.value else 0 end) as C
from table1 t1 inner join
table2 t2
on t2.table1_id = t1.id inner join
table3 t3
on t3.key_id = t2.key
where t1.id = 1
group by t1.id, t1.name;
ただし、これは事前に既知の値のみで集計を行います。動的な方法で実行する場合は、MySQLでのプログラミングアプローチが必要になる場合があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加