0

所以,我是一个新手 php/mysql 开发人员,我正在尝试通过创建一个基于文本的游戏应用程序(一点上下文)来了解更多信息。我正在建造一个军械库,盔甲使用 4 张桌子。此查询的目的是向用户显示他们装备的物品。

  1. 用户表——保存用户信息(user_id)
  2. 物品表 - 包含有关游戏物品的所有非特定信息(item_id)
  3. 库存表 - 保存有关用户库存的信息。用户表和项目表之间的关联。
  4. Armor/Weapons table - 包含有关装甲和武器的特定信息(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;
4

1 回答 1

0

要将所有内容放在一行中,您可以使用GROUP_CONCAT()

SELECT GROUP_CONCAT(DISTINCT wep_name) AS weapons, GROUP_CONCAT(DISTINCT arm_name) AS armor
FROM users
JOIN inventory 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;
于 2013-06-17T20:51:48.077 回答