Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从一对多关系表中选择一行结果_Php_Mysql - Fatal编程技术网

Php 如何从一对多关系表中选择一行结果

Php 如何从一对多关系表中选择一行结果,php,mysql,Php,Mysql,我有两张桌子: 餐厅 +---------------+----------------+ | restaurant_id | Restaurant name| +---------------+----------------+ | 1 | KFC | | 2 | McD | +----+---------------------------+ 烹饪 +---------------+--------

我有两张桌子:

餐厅

+---------------+----------------+
| restaurant_id | Restaurant name|
+---------------+----------------+
| 1             | KFC            |
| 2             | McD            |
+----+---------------------------+
烹饪

+---------------+---------------+----------------+
| cuisine_id    | restaurant_id | cuisine        |
+---------------+---------------+----------------+
| 1             | 1             | Fastfood       |
| 2             | 1             | Fried Chicken  |
| 3             | 2             | Fastfood       |
| 4             | 2             | Burger         |
+---------------+---------------+----------------+
是否有可能获得这样的数据=

+---------------+----------------+------------------------+
| restaurant_id | Restaurant name| Cuisine                |
+---------------+----------------+------------------------+
| 1             | KFC            |Fastfood, Fried Chicken |
| 2             | McD            |Fastfood, Burger        |
+----+---------------------------+------------------------+
只需一个查询? 或者我应该通过php select table Restaurant first>foreach loop>按餐厅id选择菜肴>解析到新数组中来执行此操作。

您可以使用:

选择r.餐厅id、r.餐厅名称, 由c.Couries订购的集团美食 从餐厅到r 左键作为c ON r.restaurant\u id=c.restaurant\u id加入烹饪 按r.餐厅id、r.餐厅名称分组
注意:仅当您需要一个以逗号分隔的烹饪名称列表时,才需要GROUP_CONCAT中的ORDER BY子句。

您可以使用GROUP_CONCAT:

SELECT c.restaurant_id,r.restaurant_name, GROUP_CONCAT(c.cuisine)
FROM Restaurant r
INNER JOIN Cuisine c ON c.restaurant_id = r.restaurant_id 
GROUP BY c.restaurant_id
SELECT Restaurant.restaurant_id, Restaurant.Restaurant_name, GROUP_CONCAT(Cuisine.cuisine)
FROM Restaurant
LEFT JOIN Cuisine ON Restaurant.restaurant_id = Cuisine.restaurant_id
GROUP BY Restaurant.restaurant_id, Restaurant.Restaurant_name