连接 2 个表并根据其关联 ID 重复显示同一列

Posted

技术标签:

【中文标题】连接 2 个表并根据其关联 ID 重复显示同一列【英文标题】:Joining 2 Tables and show the same column repeatedly based on its associative ID 【发布时间】:2013-05-16 01:16:20 【问题描述】:

您好,我不知道如何用简短的句子表达,但我有如下的数据库表

用户表

user_id 用户名 等等……

物品

item_id item_name

Item_Equipped

equipped_id 头部(FK 到 item_id) 手(FK 到 item_id) user_id(FK 到用户表中的 user_id)

我想生成一个显示如下格式的查询

user_id |头| head_item_name |手| hand_item_name | ...

到目前为止,我只能这样做:

SELECT user.user_id, user.username,
        equipments.head, equipments.head_acc,
        equipments.hand,
        equipments.acc, equipments.body
FROM gw_member_equipped AS equipments
LEFT JOIN gw_member AS user ON user.memberid = equipments.member_id

这(我不得不说实话)没什么作用。

我尝试在 item 和 item_equipped 之间执行 INNER JOIN,但是我无法获取每个项目的单独名称(基于其项目 ID)

【问题讨论】:

你想要的输出中的 head 和 head_item_id 有什么不同吗? @pratikgarg head(是 Item_Equipped 表中的一列)而 head_item_id 是 Item 表中的一列,它们都是指同一个值的必要条件。事实上,我只是编辑我的帖子以避免混淆。谢谢.. 【参考方案1】:

您需要将 ITEM 表与 ITEM_EQUIPPED 表连接两次。

您可以使用下面的查询来查询您想要的输出列..

SELECT USER.User_Id,
       Item_Equipped.Head,
       Item_Heads.Item_Id Head_Item_Id, -- if you want you can remove this column
       Item_Heads.Item_Name Head_Item_Name,       
       Item_Equipped.Hand,
       Item_Hands.Item_Id Hand_Item_Id,  -- and this column also as these columns are same as their previous select columns
       Item_Hands.Item_Name Hand_Item_Name
  FROM USER, Item Item_Heads, Item Item_Hands, Item_Equipped
 WHERE USER.User_Id = Item_Equipped.User_Id
   AND Item_Heads.Item_Id = Item_Equipped.Head
   AND Item_Hands.Item_Id = Item_Equipped.Hand

【讨论】:

以上是关于连接 2 个表并根据其关联 ID 重复显示同一列的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 如何连接 2 个表并检查值是不是存在

使用codeigniter加入3个表并显示它

左连接 3 个表并在空单元格上显示真假

连接 2 个表并计算 SQL 中特定字段的出现次数

SQL - 连接 2 个表并返回 2 行之间的值差异

MariaDB 比较 2 个表并删除不在第一个表中的位置(大数据集)