如何在 table 中显示多个类别的产品
How to display products with multiple categories in a table
我有 3 个 table,即产品、类别和 product_category。如何在管理面板的 table 中显示多个类别的产品?
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 |
+-----------+------------+
我尝试创建一个 'link table' 但是当我尝试获取数据时,它给了我多行。
$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;
我有 3 个 table,即产品、类别和 product_category。如何在管理面板的 table 中显示多个类别的产品?
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 |
+-----------+------------+
我尝试创建一个 'link table' 但是当我尝试获取数据时,它给了我多行。
$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;