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.