[英]Selecting and matching data from 3 tables
場景
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>';
}
}
?>
您將必須在如下所示的這些表之間進行JOIN
,執行inner join
JOIN
,該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
維護關系(表的外鍵)。 因此,您可以與members
一起join
teams
; 您將首先必須與關系表聯接,然后根據匹配的ID與其他表members
聯接。
我執行outer join
要記住,並不是所有團隊中都可能有成員,因此外部聯接將使您所有團隊都受到關注,無論成員是否參與。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.