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

MYSQL / PHP tìm mục phổ biến nhất liên kết với một mục nhất định

Bắt đầu với một truy vấn lấy tất cả các bộ sưu tập có chứa mục bạn đã chọn:

SELECT collectionId
FROM wishLists
WHERE itemId = 876

Từ đó, bạn muốn nhận được tất cả các id item khác trong các bộ sưu tập đó.

SELECT itemId
FROM wishLists
WHERE collectionId IN (above query)
AND itemId != 876

Điều này có thể được viết lại dưới dạng tham gia:

SELECT a.itemId
FROM wishLists AS a
JOIN wishLists AS b ON a.collectionId = b.collectionId
WHERE a.itemId != 876 AND b.itemId = 876

Giờ đây, bạn có thể đếm số lần lặp lại điều này để tìm những lần lặp lại phổ biến nhất:

SELECT a.itemId
FROM wishLists AS a
JOIN wishLists AS b ON a.collectionId = b.collectionId
WHERE a.itemId != 876 AND b.itemId = 876
GROUP BY a.itemId
ORDER BY COUNT(*) DESC

Thêm LIMIT n ở cuối để hiển thị n mục hàng đầu.




  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 - Không thể chèn giá trị NULL vào cột, nhưng tôi có một giá trị mặc định được chỉ định?

  2. Làm thế nào tôi có thể đưa ra hai điều kiện trong điều khoản có

  3. MySQL không tạo ra kết quả chính xác bằng cách sử dụng tham số ngày ODBC

  4. Làm cách nào để tạo cấu trúc mảng này trong một biểu mẫu HTML?

  5. MySQLNonTransientConnectionException Không thể tạo kết nối với máy chủ cơ sở dữ liệu. Gây ra bởi:java.lang.NullPointerException