簡體   English   中英

從3個表中選擇和匹配數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM