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

MySQL:Uzyskaj produkty posiadające wszystkie wymienione atrybuty

-- PHP (or any other languaje) parts are hardcoded here!!!!

SELECT p.*, hma.howmuchattr
-- howmuchattr is needed by HAVING clause, 
-- you can omit elsewhere (by surrounding SELECT or by programming languaje)

FROM products AS p 
LEFT JOIN product_attributes AS pa ON pa.product_id = p.id 
LEFT JOIN (
    SELECT product_id, count(*) as howmuchattr
    FROM product_attributes 
    GROUP BY product_id
) as hma on p.id = hma.product_id

WHERE 
pa.attribute_id IN 
(1,3)                    -- this cames from PHP (or any other languaje). Can be (1) for the other case
GROUP BY p.id
HAVING count(*) = howmuchattr;

zobacz sqlfiddle tutaj
zobacz także tę odpowiedź



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połącz ciąg i liczbę w MySQL

  2. Aktualizuj klienta C# za każdym razem, gdy baza danych jest aktualizowana

  3. Upuściłem tabelę general_log, jak mogę ją ponownie utworzyć?

  4. Błąd 1022 — Nie można pisać; zduplikowany klucz w tabeli

  5. MySQL do formatowania outfile