MySQL join many to many single row

后端 未结 2 702
别跟我提以往
别跟我提以往 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.

    0 讨论(0)
  • 2020-12-08 08:49

    You can use group_concat if using mySQL...

    see this thread.

    SQL to join one table to another table multiple times? (Mapping products to categories)

    (possible duplicate)

    0 讨论(0)
提交回复
热议问题