MySQL 查询多个表中的多个联接[已关闭]

问题描述 投票:0回答:1

所以我想加入 3 个表来获取数据。我想要的。这是我想要的表格和输出。请帮助我,谢谢!

锦标赛表

id 锦标赛名称
1 夏季联赛
2 季节性锦标赛

锦标赛_参赛者表

p_id 锦标赛_id 团队 ID
1 1 1
2 1 2
3 2 3

团队名称表

团队 ID 团队名称
1 阿尔法
2 太棒了
3 查理

这是我想要的输出

如果锦标赛 id = 1 则输出

t_name 团队数量 团队名称
夏季联赛 2 阿尔法,布拉沃
mysql database join select
1个回答
1
投票

您可以使用

GROUP BY
然后使用一些聚合函数来获取相关数据。

select
   any_value(t.tournament_name) as t_name,
   count(distinct tn.team_id) as '# of teams',
   group_concat(tn.team_name) as team_names
  from tournament_table as t
  left join tournament_participant as tp
    on t.id = tp.tournament_id
  left join team_name as tn
    on tp.team_id = tn.team_id
where t.id = 1
group by t.id;

涉及的聚合函数有:

  • ANY_VALUE
    允许您选择分组行的任何列值(随机)。在这种情况下,这并不重要,因为它们都将是“夏季联赛”。您可以通过将
    id
    中的
    tournament_table
    配置为
    primary key
    来避免使用此功能,如 @user1191247 所解释的。
  • COUNT
    来统计参与者。
    distinct
    修饰符用于对每个参与者仅计数一次。
  • GROUP_CONCAT
    连接列内的字符串值

参见小提琴:https://www.db-fiddle.com/f/7iT6NGXioX3qk5YoaudE1t/1

© www.soinside.com 2019 - 2024. All rights reserved.