簡體   English   中英

如何聯接三個表並顯示結果?

[英]How to join three tables and display the result?

我試圖了解如何聯接和顯示來自三個表的數據,並創建了這三個表,列出了人(person) ,水果的類型(fruit)和人們喜歡的水果(favs)

 Person               Fruit                 Favs

id  |  name        id  | type        id |  person_id  |  fruit_id

1   |  Peter        1  | apple       1  |  Peter      |  orange
2   |  Sue          2  | orange      2  |  Sue        |  apple
3   |  John         3  | banana      3  |  John       |  banana
4   |  Mary                          4  |  Peter      |  apple
                                     5  |  Sue        |  orange

我的目標是學習如何將所有三個表連接起來並顯示人們喜歡的水果(如果有)。 像這樣:

Peter  | orange, apple
Sue    | apple, orange
John   | banana
Mary   |

我只是了解如何連接所有三個表以顯示上面的數據,但真正令我困惑的是如何回顯結果。 我應該使用嵌套的while循環還是foreeach循環? 我很困惑,非常感謝有人向我展示方式。 我最接近的是這個(我知道這還很遙遠)。

<?php

$sql="SELECT person.name, favs.fruit_id 
      FROM person LEFT JOIN favs
      ON person.name = favs.person_id
      ORDER by person.id";

$result_set=mysql_query($sql);

while($row=mysql_fetch_array($result_set))
{
    echo $row['name'];
    echo $row['fruit_id'];
    echo '<br />';
}

好的,在您的表示例數據中,我假設您在表收藏夾中放置了用於可讀性的名稱,不是ID本身。 假設使用GROUP_CAT是這種情況,那么您的SQL語句將是:

SELECT p.name, GROUP_CONCAT(ft.name)
FROM favs f
INNER JOIN fruit ft ON ft.id = f.fruit_id
LEFT JOIN person p ON p.id = f.person_id
GROUP BY f.person_id

像這樣做:

SELECT Person.id,Fruit.name FROM Person INNER JOIN Person.id=Fruit.person_id WHERE ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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