我有一个我需要为学校做的项目。这是基于munchkin(棋盘游戏)在Javafx制作的游戏。
我们有一个英雄,这个英雄会击败一个房间里的怪物,每个怪物都会捍卫一个宝藏(我将它视为像mmorpg中的怪物的战利品)。 现在我不确定怪物和宝物之间的联系。 每个宝藏都有0或1个怪物。每个怪物至少有一个宝藏,也可以是多个。 老师说在我的情况下使用额外的表格(Treasure_has_Monsters)。 我不确定参考文献是否正确......
目前我的数据库: Database Design
现在我遇到的问题如下。 我需要从怪物拥有的所有宝藏中获取一份清单。 我可以查询treasure_has_monster表并获取所有id的宝藏 然后创建一个查询以获取所有带有id的宝藏。
问题:
- 有没有办法在一个查询中执行此操作?
- Treasures和Monsters之间的参考是否正确?
答案 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