Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL łączy wiele do wielu w jednym rzędzie

Potrzebujesz dwóch złączeń:

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

Jeśli produkt nie może znajdować się w żadnej kategorii, a nadal chcesz go zwrócić, zmień JOIN na LEFT JOIN w obu miejscach.

Alternatywne podejście:

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

Jednak może być lepiej po prostu użyć dwóch zapytań zamiast umieszczać wiele wartości w jednej komórce.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa operator RLIKE w MySQL

  2. jak możemy zmienić wartość za pomocą przycisków radiowych?

  3. Zmaterializowany widok w mysql

  4. Zasoby klastra Galera

  5. niezdefiniowana metoda `eq' dla nil:NilClass z rails 3 i ruby ​​enterprise na ubuntu hardy