Mysql 通过SQL联接获取每个团队的成员

Mysql 通过SQL联接获取每个团队的成员,mysql,Mysql,我有3张桌子,成员,团队和团队成员 团队成员包含来自成员和团队的ID,并按行存储 团队成员表的架构: 团队表: 我想做的是创建一个连接,在这里我可以从teams表中输出team_name,然后在neth下显示与该团队关联的成员的firstname。例如: Team 1 joe bloggs jon doe Team 2 charlie chaplin hulk hogan 我的php代码如下所示: <?php ini_set('display_errors', 1); ini_set

我有3张桌子,成员,团队和团队成员

团队成员包含来自成员和团队的ID,并按行存储

团队成员表的架构:

团队表:

我想做的是创建一个连接,在这里我可以从teams表中输出team_name,然后在neth下显示与该团队关联的成员的firstname。例如:

Team 1
joe bloggs
jon doe

Team 2
charlie chaplin
hulk hogan
我的php代码如下所示:

<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$sql = "SELECT t.team_name, group_concat(m.firstName) 
        FROM members AS m
        JOIN team_members AS tm
        ON tm.member_id = m.member_id 
        JOIN teams as t
        on t.team_id = tm.team_id
        GROUP BY t.teamname"; 

$result = $conn->query($sql);
    if($result->num_rows > 0){
        while($row = $result->fetch_assoc()){
            echo $row["member_id"] . '<br>';
            echo $row["team_id"] . '<br><br>';      
        }
    }
?>

在PHP中实现这一点的简单方法是两个嵌套循环的宽度。首先,你打开团队表,然后打印它。第二,你打印团队id上的所有游戏宽度

比如:

 do{
      echo $row_team;

      do{
           echo $row_playa;
      }while($row_plya = mysql_fetch_assoc($playas));    // whear pleya.team_id = $row_team.id

 }while($row_team = mysql_fetch_assoc($teams));

您应该使用两个联接将三个表拼接在一起

SELECT t.team_name as team_name, group_concat(m.firstName) as team_members 
FROM members AS m
JOIN team_members AS tm
ON tm.member_id = m.member_id 
JOIN teams as t
on t.team_id = tm.team_id
GROUP BY t.team_name
然后,您应该在尝试使用查询之前检查查询的状态

if(!$result = $conn->query($sql)) {
     die(printf("Errormessage: %s\n", $conn->error));
}
然后循环遍历结果,并用逗号拆分分组的值

while($row = $result->fetch_assoc()){
      echo $row["team_name"] . '<br>';
      $names = explode(',', $row['team_members']);
      foreach($names as $name) {
           echo $name . '<br>';
       }
       echo '<br>';      
}

您还可以在组_concat中用作分隔符。您可以在此处阅读有关该函数的更多信息。如果你这样做了,你就可以摆脱foreach并爆炸,因为$row['team_members']将为每个成员构建一个换行符。

你需要提供你迄今为止尝试过的代码。@JBES我正在努力理解如何进行连接,但我会提出我的问题…非常粗略的示例。。。选择t.teamname,group_concatm.name from members as m join teammembers as tm on tm.memberid=m.memberid作为t on t加入团队。teamid=tm.teamid按t分组。teamname@chris85那么我该如何输出团队名称,后面跟着成员…@chris85所以iv稍微调整了它以反映我的表数据,但我注意到:试图在中获取非对象的属性不应使用mysql。这也不是最简单的方法,让mysql做这件事是最简单的。
while($row = $result->fetch_assoc()){
      echo $row["team_name"] . '<br>';
      $names = explode(',', $row['team_members']);
      foreach($names as $name) {
           echo $name . '<br>';
       }
       echo '<br>';      
}