Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL:Dapatkan produk yang memiliki semua atribut yang terdaftar

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

lihat sqlfiddle di sini
lihat juga jawaban ini



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri Pilih grup berdasarkan karakter terakhir di bidang

  2. Algoritma Untuk Memilih Tempat Paling Populer dari Database

  3. Memilih kolom yang juga merupakan kata kunci di MySQL

  4. kueri mysql untuk mencocokkan kalimat dengan kata kunci di bidang

  5. Transaksi mysql Node.js