Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL:Nhận các sản phẩm có tất cả các thuộc tính được liệt kê

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

xem sqlfiddle tại đây
xem thêm câu trả lời này



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Triển khai cơ sở dữ liệu với các bản cập nhật

  2. Hàm lag / dẫn đầu trong MySQL?

  3. Chức năng 'Chỉnh sửa' cho các bài đăng trên diễn đàn và những thứ tương tự

  4. Mysql tham gia và tổng là kết quả nhân đôi

  5. Chọn một cơ sở dữ liệu trong mysql với khoảng trắng trong tên của nó