SCENARIO
x3表:
Members
member_id | member_name
-------------
1 | member 1
2 | member 2
3 | member 3
teams
team_id | team_name
-------------
1 | team 1
2 | team 2
3 | team 3
team_members
team_member_id | member_id | team_id
------------------------------------
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3
会员可以与多个团队相关联,因此我将数据分成3个表格。
我想列出所有团队,并在其下方显示每个团队的成员。我不确定这个最好的方法是什么,因为我是数据库设计的新手。
目前,我所做的只是输出两个值:
<?php
$sql = "SELECT * FROM team_members";
$result = $conn->query($sql);
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
echo 'teamID: <strong>' . $row["team_id"] . '</strong><br>';
echo 'memberID: <strong>' . $row["member_id"] . '</strong><br>';
}
}
?>
答案 0 :(得分:0)
您必须在这些表之间JOIN
执行inner join
,执行只会提供匹配记录的left join
。如果您想要所有团队,无论这些团队是否有任何成员,请考虑改为select t.team_id, m.member_ID, m.member_name
from teams t
left join team_mambers tm on t.team_id = tm.team_id
left join members m on m.member_ID = tm.member_ID;
。
team_mambers
说明:
由于团队和成员之间存在多对多的关系;你有一个关系表,你可以在另一个表join
中维护关系(或表的外键)。因此,您teams
members
members
;您首先必须加入关系表,然后根据匹配的ID加入另一个表outer join
。
我已经执行了{{1}},请记住,并非所有团队都可能拥有成员,因此外部联接将为您提供所有团队,无论其成员与否。