Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL joint plusieurs à plusieurs lignes

Vous avez besoin de deux jointures :

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 produit n'appartient à aucune catégorie et que vous souhaitez toujours le retourner, remplacez JOIN par LEFT JOIN aux deux endroits.

Une approche alternative :

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

Cependant, il peut être préférable d'utiliser simplement deux requêtes au lieu de mettre plusieurs valeurs dans une seule cellule.