sql >> Databáze >  >> RDS >> Mysql

MySQL spojuje mnoho k mnoha do jednoho řádku

Potřebujete dvě spojení:

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

Pokud produkt nemůže být v žádné kategorii a přesto ho chcete vrátit, změňte na obou místech JOIN na LEFT JOIN.

Alternativní přístup:

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

Může však být lepší použít dva dotazy namísto vkládání více hodnot do jedné buňky.



  1. Jak ignorovat chybu duplicitního klíče v T-SQL (SQL Server)

  2. Použití výsledku SQL ve smyčce foreach

  3. Nejlepší způsob, jak otestovat, zda existuje řádek v tabulce MySQL

  4. Zobrazení obrázků z databáze MySQL v JSF datatable