Mysql 通过SQL联接获取每个团队的成员
我有3张桌子,成员,团队和团队成员 团队成员包含来自成员和团队的ID,并按行存储 团队成员表的架构: 团队表: 我想做的是创建一个连接,在这里我可以从teams表中输出team_name,然后在neth下显示与该团队关联的成员的firstname。例如: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
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>';
}