【发布时间】:2021-03-04 08:43:32
【问题描述】:
我正在开发一个关于神奇宝贝角色的网络应用程序,它应该显示以下数据:姓名、图像、类别、类型、技能(最多 3 个)和弱点(最多 3 个)。
我正在处理的模型和表格如下:
关于表格的注意事项: Type=Tipo, Category= 类别, Weaknesses=Debilidad, Skill=Habilidad, PokemonType=PokemonTipo, PokemonWeaknesses=PokemonDebilidad, PokemonSkill= PokemonHabilidad
“PokemonTipo”、“PokemonDebilidad”和“PokemonHabilidad”表保存了每个 Pokemon 的类型、弱点和能力的“多对多”记录。
我正在使用的选择是这个。
SELECT po.idPokemon, po.nombre AS 'Pokemon', po.imagen, cat.nombre AS 'Categoria', ti.nombre
AS 'Tipo',
ha.nombre AS 'Habilidad', de.nombre AS 'Debilidad'
FROM Pokemon po
INNER JOIN Categoria cat
ON po.idCategoria = cat.idCategoria
INNER JOIN PokemonTipo pt
ON po.idPokemon = pt.idPokemon
INNER JOIN Tipo ti
ON ti.idTipo = pt.idTipo
INNER JOIN PokemonHabilidad ph
ON po.idPokemon = ph.idPokemon
INNER JOIN Habilidad ha
ON ha.idHabilidad = ph.idHabilidad
INNER JOIN PokemonDebilidad pd
ON po.idPokemon = pd.idPokemon
INNER JOIN Debilidad de
ON de.idDebilidad = pd.idDebilidad
GROUP BY po.idPokemon
ORDER BY po.idPokemon
从图片中可以看出,通过我使用的选择,我只能为每个神奇宝贝获得一项技能(Habilidad)和一个弱点(Debilidad)。
我一直没能解决的问题是:如何在同一个Select的不同列中,获取并分离出每个宝可梦的技能(Habilidad)和弱点(Debilidad)。 p>
对于每个神奇宝贝,我必须有以下字段:
名称、图片、类别、类型、技能 1、技能 2、技能 3、弱点 1、弱点 2、弱点 3
如果您想进行测试,可以在此链接获得数据库脚本。 https://github.com/jcesarux/pokebase/blob/master/pokebase.sql
对于如何解决这个问题,我希望能有不同的观点。
问候并感谢您的支持。!!
【问题讨论】:
-
对具有多个值的属性使用
GROUP_CONCAT(DISTINCT columname)。 -
关注 MCRE 的“M”组件,请参阅meta.stackoverflow.com/questions/333952/…