sql >> Base de Datos >  >> RDS >> Mysql

MySQL une muchos a muchos de una sola fila

Necesitas dos uniones:

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

Si un producto no puede estar en ninguna categoría y aún desea devolverlo, cambie JOIN a LEFT JOIN en ambos lugares.

Un enfoque 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

Sin embargo, podría ser mejor usar solo dos consultas en lugar de poner múltiples valores en una sola celda.