Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL junta muitos para muitos linha única


Você precisa de duas junções:
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 um produto não estiver em nenhuma categoria e você ainda quiser devolvê-lo, altere JOIN para LEFT JOIN em ambos os lugares.

Uma abordagem alternativa:
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

No entanto, pode ser melhor usar apenas duas consultas em vez de colocar vários valores em uma única célula.