尝试将4个表与一个mysql查询关联

尝试将4个表与一个mysql查询关联,mysql,join,Mysql,Join,因此,我是一名php/mysql开发新手,我试图通过创建一个基于文本的游戏应用程序(一点上下文)了解更多信息。我在建一个军械库,这件盔甲用了4张桌子。此查询的目的是向用户显示他们装备的物品 用户表-保存用户信息(用户id) 项目表-保存关于游戏中项目(项目id)的所有非特定信息 库存表-保存有关用户库存的信息。用户表和项目表之间的关联 装甲/武器表-保存有关装甲和武器的特定信息(arm_名称/wep_名称) 我希望能够从库存中选择用户装备的物品,并返回物品的名称。这是我能想到的最好的,但我似乎不

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

  • 用户表-保存用户信息(用户id)
  • 项目表-保存关于游戏中项目(项目id)的所有非特定信息
  • 库存表-保存有关用户库存的信息。用户表和项目表之间的关联
  • 装甲/武器表-保存有关装甲和武器的特定信息(arm_名称/wep_名称)
  • 我希望能够从库存中选择用户装备的物品,并返回物品的名称。这是我能想到的最好的,但我似乎不能把每件事都排成一行。有人能告诉我返回两个项目的项目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;
    

    要将所有内容都放在一行中,可以使用
    GROUP\u CONCAT()


    这不是一个真正的答案,…但是如果你使用像Laravel这样的PHP框架…这样的东西会变得非常容易,有关系等等…但是我知道你在尝试学习,所以不要理我…但是如果你感到沮丧…看看周围的各种PHP框架。如果用户有超过1项,如何将这些项目映射到一行?当前,您的查询似乎为用户返回了所有项。这不是您所需要的吗?问题是,很可能每个用户都会有多个项目(因此每个项目有一行似乎是合理的),那么为什么要返回一行呢?如果您使用的是mysql workbench,请创建一个EER图并将图片粘贴到此处。我们更容易回答这个问题:
    inventory
    中的条目如何表示
    item\u id
    指的是武器还是盔甲?您能确保这些表之间的ID没有重叠吗?工作非常好。非常感谢。
    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;