首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择‘one ` where =one、all或多个选项

选择‘one ` where =one、all或多个选项
EN

Stack Overflow用户
提问于 2020-04-08 11:01:18
回答 1查看 33关注 0票数 0

我有多个生物在数据库(Mysql)和6个不同的领域。目前所有的生物出现在任何地方,但我想让一些出现在一个地点或多个选定的地点。

我现在要解决的方法是,每个位置都有从1到9的id。墓地= 1,沼泽= 2,森林= 3,洞穴= 4。然后把它保存在作为字段where_creature_appears保存的生物表中。

代码语言:javascript
运行
复制
where
12 appears only in Graveyard and Swamp; 
23 appears only in Swamp and Forest; 
124 appreas only in Graveyard, Swamp, Caves; 
etc

对于sql,我将使用WHERE LIKE % $location_id %。如果我有更多的地点,那么我也可以扩展到信件。

问题是,是否有更好的方法,或更简单,或更聪明。如果有人能用链接或想法指出有用的方向,那就高兴了。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-04-08 11:22:02

您可以通过多一个表来实现这一点,这将是多到多的表。

基本上,在那个表中,如果那个生物在那个特定的区域和相反的区域,你就会得到这个信息。因为,许多生物可以在许多地区,许多地区可以有许多不同的生物。

那张桌子应该是这样的:

表名:creature_area

代码语言:javascript
运行
复制
creature_id | area_id
----------------------
     1      |    2    
     1      |    3    
     3      |    2    
     5      |    1    

然后,您将能够查询特定生物的所有区域,以及特定区域的所有生物,如下所示:

把所有区域的身份证给我,因为这个生物在:

SELECT area_id FROM creature_area WHERE creature_id = ....

把这个地区所有生物的身份证给我:

SELECT creature_id FROM creature_area WHERE area_id = ....

然后你可以做所有类型的JOIN来获取那些生物/区域的名字等等。

有关如何实现这一目标的更多详细信息,请参见:https://dzone.com/articles/how-to-handle-a-many-to-many-relationship-in-datab

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61099140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档