テーブルを結合することから始めたいと思うでしょう:
select k.name_,
t.type,
a.ability
from kanto k
left join kantotype kt
on k.pokemonid = kt.pokemonid
left join types t
on kt.typeid = t.typeid
left join kantoability ka
on k.pokemonid = ka.pokemonid
left join abilities a
on ka.abilityid = a.abilityid
結合構文を学習するのに助けが必要な場合は、 join の優れた視覚的説明があります。
これにより、すべての名前とそのタイプと能力のリストが表示されます。
取得した値を列に回転させたい場合は、集計関数とCASE
式を使用してデータをピボットできます。
select k.name_,
max(case when t.typeid = 1 then t.type end) Type1,
max(case when t.typeid = 2 then t.type end) Type2,
max(case when a.abilityid = 1 then a.ability end) Ability1,
max(case when a.abilityid = 2 then a.ability end) Ability2
from kanto k
left join kantotype kt
on k.pokemonid = kt.pokemonid
left join types t
on kt.typeid = t.typeid
left join kantoability ka
on k.pokemonid = ka.pokemonid
left join abilities a
on ka.abilityid = a.abilityid
group by k.name_
式のそれぞれで、変換case
するものを特定する必要があります。id
max(case when t.typeid = 1 then t.type end)
^-- replace with your actual value