php - 如何在表格中显示具有多个类别的产品
问题描述
我有 3 个表,即产品、类别和产品类别。如何在管理面板的表格中显示具有多个类别的产品?
product table category table product_category table
+---+------------+ +---+------------+ +-----------+------------+
|id | name | |id | name | |product_id | category_id|
+---+------------+ +---+------------+ +-----------+------------+
| 1 | Cake | | 1 | Sweets | | 1 | 1 |
| 2 | Chocolate | | 2 | Dessert | | 1 | 2 |
+---+------------+ +---+------------+ | 2 | 1 |
| 2 | 2 |
+-----------+------------+
我尝试创建一个“链接表”,但是当我尝试获取数据时,它给了我多行。
$query = mysqli_query($con, "SELECT * FROM product, category, product_category WHERE product.product_id=product_category.product_id AND product_category.category_id=category.category_id");
它给了我这个输出:
+-------------+------------+
|product name | category |
+-------------+------------+
| Cake | Sweets |
| Cake | Dessert |
| and so on... |
+-------------+------------+
但我希望它看起来像这样:
+-------------+--------------------+
|product name | category |
+-------------+--------------------+
| Cake | Sweets,Dessert |
| and so on... |
+-------------+--------------------+
解决方案
您应该使用GROUP BY
,GROUP_CONCAT
并加入
SELECT product.id AS product_id,product.name,GROUP_CONCAT(category.name) AS category
FROM product
LEFT JOIN product_category ON product.id=product_category.product_id
INNER JOIN category ON category.id=product_category.category_id
GROUP BY product_id;
推荐阅读
- php - 使用 guzzle 执行批处理请求
- helidon - 调试 Helidon MP 应用程序
- angular - Angular 8 - primeNG 表 - 默认设置所有单元格可编辑
- powershell - 在 powershell 中操作之前检查项目是否是快捷方式
- amazon-web-services - Cloudformation 功能在 Terraform 中不可用
- c - 如何使用机器代码调用库函数?
- makefile - Makefile 逻辑与
- amazon-web-services - 使用 aws Cognito 进行授权的用户的不同访问令牌
- path - 归约 - 子集和问题到路径和问题
- javascript - 更新帖子:如何获得 JavaScript 阶乘程序的循环来显示使用的工作?查看要求