Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL verbindet viele mit vielen einzelnen Zeilen

Sie benötigen zwei 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

Wenn ein Produkt in keine Kategorie passt und Sie es trotzdem zurückgeben möchten, ändern Sie JOIN an beiden Stellen in LEFT JOIN.

Ein alternativer Ansatz:

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

Es könnte jedoch besser sein, nur zwei Abfragen zu verwenden, anstatt mehrere Werte in eine einzelne Zelle zu schreiben.