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