Mulailah dengan kueri yang mendapatkan semua koleksi yang berisi item yang Anda pilih:
SELECT collectionId
FROM wishLists
WHERE itemId = 876
Dari sini, Anda ingin mendapatkan semua itemId lainnya di koleksi tersebut.
SELECT itemId
FROM wishLists
WHERE collectionId IN (above query)
AND itemId != 876
Ini dapat ditulis ulang sebagai gabungan:
SELECT a.itemId
FROM wishLists AS a
JOIN wishLists AS b ON a.collectionId = b.collectionId
WHERE a.itemId != 876 AND b.itemId = 876
Sekarang Anda dapat menghitung pengulangan ini untuk menemukan yang paling umum:
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
Tambahkan LIMIT n
klausa di akhir untuk menunjukkan n item teratas.