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

时间:2013-06-17 20:43:27

标签: mysql join

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

  1. 用户表 - 保留用户信息(user_id)
  2. 项目表 - 保存游戏项目中的所有非特定信息(item_id)
  3. 库存表 - 包含有关用户库存的信息。用户表和项目表之间的关联。
  4. 护甲/武器表 - 保存有关护甲和武器的具体信息(arm_name / wep_name)
  5. 我希望能够从库存中选择配备用户的物品并返回物品的名称。这是我能够想到的最好的,但我似乎无法把所有东西都变成一排。任何人都可以指出我正确的方向返回两个项目的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;
    

1 个答案:

答案 0 :(得分: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;