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

Chọn hàng có nhiều thẻ ... có cách nào tốt hơn không?

Không cần thực hiện nhiều phép nối. Nếu bạn cần đối sánh tất cả các thẻ, bạn có thể sử dụng IN mệnh đề với một truy vấn con như sau:

select p.sku, p.name, p.path 
from shop_products p
where p.sku in (
    select pc.product_sku 
    from shop_products_categories pc 
    inner join shop_categories c on pc.category_id = c.id
    where c.path in ('flowers', 'romance')
    group by pc.product_sku
    having count(distinct c.path) = 2
)

Lưu ý rằng bạn sẽ cần điều chỉnh số 2 là số lượng thẻ duy nhất mà bạn đang đối sánh. Hãy cẩn thận trong trường hợp đây là dữ liệu do người dùng nhập và họ nhập cùng một thẻ hai lần.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xem liệu người dùng có trực tuyến trong một trang web có cơ sở dữ liệu được điều khiển bằng php và mysql hay không?

  2. JDBCExceptionReporter - Lỗi SQL:0, SQLState:08001

  3. Truy vấn MySQL đệ quy?

  4. Tạo truy vấn để biết số lượng cuộc gọi chưa hoàn thành

  5. MySQL Lỗi nghiêm trọng:Không thể mở và khóa các bảng đặc quyền:Định dạng tệp 'người dùng' không chính xác