Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL unisce molti a molti in una singola riga

Hai bisogno di due join:

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

Se un prodotto potrebbe non essere in nessuna categoria e desideri comunque restituirlo, cambia JOIN in LEFT JOIN in entrambi i punti.

Un approccio alternativo:

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

Tuttavia, potrebbe essere meglio utilizzare solo due query invece di inserire più valori in una singola cella.