MySQL查询和优化数据库

时间:2014-02-28 13:16:48

标签: java mysql sql javafx

我有一个我需要为学校做的项目。这是基于munchkin(棋盘游戏)在Javafx制作的游戏。

我们有一个英雄,这个英雄会击败一个房间里的怪物,每个怪物都会捍卫一个宝藏(我将它视为像mmorpg中的怪物的战利品)。 现在我不确定怪物和宝物之间的联系。 每个宝藏都有0或1个怪物。每个怪物至少有一个宝藏,也可以是多个。 老师说在我的情况下使用额外的表格(Treasure_has_Monsters)。 我不确定参考文献是否正确......

  

目前我的数据库:   Database Design

现在我遇到的问题如下。 我需要从怪物拥有的所有宝藏中获取一份清单。 我可以查询treasure_has_monster表并获取所有id的宝藏 然后创建一个查询以获取所有带有id的宝藏。

  

问题:

     
      
  • 有没有办法在一个查询中执行此操作?
  •   
  • Treasures和Monsters之间的参考是否正确?
  •   

3 个答案:

答案 0 :(得分:1)

您可以尝试制作一个简单的查询,例如:

SELECT t.name
FROM treasure_has_monster thm
INNER JOIN trasures t ON (thm.trasure_id = t.id)
WHERE thm.monster_id = YOUR_MONSTER_ID

答案 1 :(得分:0)

根据您的架构,您可以尝试:

select t.* from Treasures t
join Treasures_has_Monsters tm on tm.Treasure_id=t.id
where Monster_id=?

在哪里?是你要列出宝藏的怪物ID。

答案 2 :(得分:0)

没有理由将两个表连在一起。您可以使用简单的内部查询。

SELECT * FROM Treasures
WHERE id IN (SELECT treasure_id from Treasures_has_Monsters
             WHERE monsterid = <MID>);

<MID>替换为您想要的怪物ID