Започнете със заявка, която получава всички колекции, които съдържат избрания от вас елемент:
SELECT collectionId
FROM wishLists
WHERE itemId = 876
От това искате да получите всички други идентификатори на елементи в тези колекции.
SELECT itemId
FROM wishLists
WHERE collectionId IN (above query)
AND itemId != 876
Това може да бъде пренаписано като присъединяване:
SELECT a.itemId
FROM wishLists AS a
JOIN wishLists AS b ON a.collectionId = b.collectionId
WHERE a.itemId != 876 AND b.itemId = 876
Сега можете да преброите повторенията на това, за да намерите най-често срещаните:
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
Добавете LIMIT n
клауза в края за показване на първите n елемента.