【发布时间】:2013-06-17 20:43:26
【问题描述】:
所以,我是一个新手 php/mysql 开发人员,我正在尝试通过创建一个基于文本的游戏应用程序(一点上下文)来了解更多信息。我正在建造一个军械库,盔甲使用 4 张桌子。此查询的目的是向用户显示他们已装备的物品。
- 用户表-保存用户信息(user_id)
- items table - 包含所有关于游戏物品 (item_id) 的非特定信息
- 库存表 - 保存有关用户库存的信息。 users 表和 items 表之间的关联。
- Armor/Weapons 表 - 包含有关装甲和武器的特定信息 (arm_name/wep_name)
我希望能够从库存中选择用户装备的物品并返回物品的名称。这是我能想到的最好的,但我似乎无法将所有内容放在一行中。谁能指出我正确的方向以返回两个项目的 item_id 及其名称?我真的很感激。
select weapons.item_id, weapons.wep_name, armor.arm_name, armor.item_id from inventory
join users on users.user_id = inventory.user_id
left join weapons on weapons.item_id = inventory.item_id
left join armor on armor.item_id = inventory.item_id
where users.user_id = 1;
【问题讨论】:
-
这不是一个真正的答案,......但是如果你使用像 Laravel 这样的 PHP 框架......这样的东西变得无限容易,有关系等等......但我明白你正在努力学习,所以请忽略我.....但是如果你感到沮丧......看看周围的各种 PHP 框架。
-
如果用户拥有超过 1 个项目,这些项目将如何映射到单行?目前,您的查询看起来像是为用户返回了每个项目。这不是你需要的吗?
-
问题是每个用户很可能拥有超过 1 个项目(因此每个项目 1 行似乎是合理的),那么为什么要返回单行呢?
-
如果您使用 mysql 工作台,请创建 EER 图并将图片粘贴到此处。我们会更容易回答
-
问题:
inventory中的条目如何指示item_id是指武器还是盔甲?您是否确保这些表之间的 ID 没有重叠?