MySQL join many to many single row

后端 未结 2 710
别跟我提以往
别跟我提以往 2020-12-08 08:20

I have 3 tables that I want to combine, see below for details:

product

  • productID
  • name
  • price

prod_cat

    <
2条回答
  •  攒了一身酷
    2020-12-08 08:34

    You need two joins:

    SELECT
        product.productID,
        category.categoryID,
        product.name,
        product.price,
        category.name
    FROM product
    JOIN product_cat ON product.productID = product_cat.productID
    JOIN category ON category.categoryID = product_cat.categoryID
    

    If a product could be in no categories and you still want to return it, change JOIN to LEFT JOIN in both places.

    An alternative approach:

    SELECT
        product.productID,
        product.name,
        product.price,
        GROUP_CONCAT(category.name)
    FROM product
    JOIN product_cat ON product.productID = product_cat.productID
    JOIN category ON category.categoryID = product_cat.categoryID
    GROUP BY product.productID
    

    However it might be better just to use two queries instead of putting multiple values into a single cell.

提交回复
热议问题