Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:Вземете продукти с всички изброени атрибути

-- 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;

вижте sqlfiddle тук
вижте също този отговор



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изтрийте всички записи от таблицата в mysql

  2. Как да нормализирате SQL база данни

  3. Име на таблицата за чувствителност на малки и малки букви на MySQL в MacOS с файлова система без значение

  4. Скрипт CREATE, експортиран от MySQL Workbench, има синтактична грешка на друг компютър

  5. Обработва се изключение за достъп до обработчика на изключения в MySQL