Vous allez vouloir commencer en joignant les tables:
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
Si vous avez besoin de syntaxe se joindre à l'apprentissage de l'aide, voici un grand visual explanation of joins.
Ceci vous donnera une liste de tous les noms, et de leur type et capacité.
Si vous souhaitez faire pivoter les valeurs que vous obtenez en colonnes, vous pouvez utiliser une fonction d'agrégation avec une expression CASE
-pivot les données:
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_
Dans chacun des case
expressions que vous voudra identifier le id
à transformer:
max(case when t.typeid = 1 then t.type end)
^-- replace with your actual value
Vous essayez d'effectuer une requête de tabulation croisée. Si vous pouvez être sûr que chaque rangée de Kanto a au plus deux types et deux capacités, vous trouverez probablement plus facile d'ajouter simplement deux colonnes Type et deux colonnes Capacité à Kanto. D'un autre côté, si chaque rangée peut avoir un nombre illimité de types et d'aptitudes (nécessitant la structure plusieurs-à-plusieurs), un tableau croisé sera de toute façon inadapté, et vous devrez accéder aux types et capacités dans des requêtes séparées. – Tim