【问题标题】:sql query with 3 tables with multiple values column具有多值列的 3 个表的 sql 查询
【发布时间】:2021-09-30 08:40:03
【问题描述】:

我有 3 张桌子:

参与者(ID、姓名) 组(ID,名称) 参与者组(参与者ID,组ID)

我需要显示一个包含所有参与者的表格,最后一列包含参与者的组,可以是多个。

我有以下选择,它返回所有参与者,但如果它有多个组,我有同一个参与者的多条记录。

SELECT *
    FROM participants
      CROSS JOIN groups
      INNER JOIN participant_groups
        ON groups.id = participant_groups.id
        AND participants.id = participant_groups.id
    ORDER BY participants.name, participants.id
    

谢谢

【问题讨论】:

  • 我看不到这个问题,即将发布什么内容,您希望它看起来如何? :) - 你输出到 php?我可以看到输出以及你是如何输出的吗?就像在你的 PHP 代码中处理响应一样。
  • 请提供样本数据和想要的结果minimal reproducible example
  • @Shlomtzion 这是一个简单的 html 表格,带有一个用于显示所有记录的 foreach。
  • 如果你有几个相同的参与者,你为什么不试试 SELECT DISTINCT(*)?

标签: php mysql


【解决方案1】:

只需添加GROUP BYGROUP_CONCAT

SELECT participants.id, participants.name, GROUP_CONCAT(groups.name) AS group_list
FROM participants
LEFT JOIN participant_groups ON participants.id = participant_groups.participant_id
INNER JOIN groups ON participant_groups.group_id = groups.id
GROUP BY participants.id

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多