Inizia con una query che ottiene tutte le raccolte che contengono l'elemento selezionato:
SELECT collectionId
FROM wishLists
WHERE itemId = 876
Da questo, vuoi ottenere tutti gli altri itemId in quelle raccolte.
SELECT itemId
FROM wishLists
WHERE collectionId IN (above query)
AND itemId != 876
Questo può essere riscritto come un join:
SELECT a.itemId
FROM wishLists AS a
JOIN wishLists AS b ON a.collectionId = b.collectionId
WHERE a.itemId != 876 AND b.itemId = 876
Ora puoi contare le ripetizioni di questo per trovare quelle più comuni:
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
Aggiungi un LIMIT n
clausola alla fine per mostrare i primi n elementi.