Mysql 从多个相关表获取关系数据
我正在为一个小游戏开发一个数据库结构,这个游戏使用“工具包”,就像盔甲套装一样。目前我有4张桌子:“装备”、“装备护甲”、“装备物品”和“装备物品附魔”。 “装备”表保存装备的id及其名称,“装备盔甲”表保存装备的盔甲,“装备盔甲”表保存“装备盔甲”列可以指向的装备,“装备盔甲”表保存特定装备的附加附魔数据 现在我一直在尝试查询,我们搜索堆栈溢出和重置internet来编写一个查询,该查询将从数据库中获取所有工具包信息,不幸的是,没有任何结果 这是表结构:Mysql 从多个相关表获取关系数据,mysql,select,join,relational,Mysql,Select,Join,Relational,我正在为一个小游戏开发一个数据库结构,这个游戏使用“工具包”,就像盔甲套装一样。目前我有4张桌子:“装备”、“装备护甲”、“装备物品”和“装备物品附魔”。 “装备”表保存装备的id及其名称,“装备盔甲”表保存装备的盔甲,“装备盔甲”表保存“装备盔甲”列可以指向的装备,“装备盔甲”表保存特定装备的附加附魔数据 现在我一直在尝试查询,我们搜索堆栈溢出和重置internet来编写一个查询,该查询将从数据库中获取所有工具包信息,不幸的是,没有任何结果 这是表结构: mysql> describe
mysql> describe kit;
+----------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------------+------+-----+---------+----------------+
| kit_id | int(4) unsigned | NO | PRI | NULL | auto_increment |
| kit_name | varchar(32) | NO | UNI | NULL | |
+----------+-----------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
mysql> describe kit_armor;
+------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-----------------+------+-----+---------+-------+
| kit_id | int(4) unsigned | NO | PRI | NULL | |
| helmet | int(4) unsigned | YES | MUL | NULL | |
| chestplate | int(4) unsigned | YES | MUL | NULL | |
| leggings | int(4) unsigned | YES | MUL | NULL | |
| boots | int(4) unsigned | YES | MUL | NULL | |
+------------+-----------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
mysql> describe kit_item;
+------------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-----------------+------+-----+---------+----------------+
| id | int(4) unsigned | NO | PRI | NULL | auto_increment |
| item_id | int(4) unsigned | NO | | NULL | |
| stack_size | int(4) unsigned | NO | | NULL | |
+------------+-----------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
mysql> describe kit_item_enchantment;
+----------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-----------------+------+-----+---------+-------+
| item_id | int(4) unsigned | NO | PRI | NULL | |
| enchantment_id | int(4) unsigned | NO | | NULL | |
| tier | int(4) unsigned | NO | | NULL | |
+----------------+-----------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
和参考列:
+---------------------------+--------------------+-------------------------------+-----------------
| TABLE_NAME | COLUMN_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
+---------------------------+--------------------+-------------------------------+-----------------
| kit_armor | kit_id | kit | kit_id |
| kit_armor | helmet | kit_item | id |
| kit_armor | chestplate | kit_item | id |
| kit_armor | leggings | kit_item | id |
| kit_armor | boots | kit_item | id |
| kit_item_enchantment | item_id | kit_item | id |
我的问题是,获取所有工具包信息的最佳方式是什么,是否可以在单个查询(联接?)中实现,还是必须将其拆分为多个查询
这对我很有帮助,我从昨天开始就一直在努力解决这个问题,同时我也做了很多研究,寻找从数据库中选择关系数据的最佳方法,我只遇到了非常复杂的指南和查询,它们令人难以置信地困惑
提前感谢,
Jonas所有这些表之间似乎都有连接,因此可以将3个表连接在一起,这是获得结果的最佳性能方式。是的,您可以为此编写单个查询。如果没有你预期的结果,我什么也说不出来……@Tilt你能告诉我正确的方向吗?我一直在处理不同的join和多个select查询,但我无法以一种能够正确解析数据的方式获取数据。例如,我想知道头盔、胸罩、护腿和靴子的套件项目值,它们的值应该为NULL,而不是NULL(因此我知道这个套件不需要头盔)。