Begin met een zoekopdracht die alle collecties ophaalt die het item bevatten dat u hebt geselecteerd:
SELECT collectionId
FROM wishLists
WHERE itemId = 876
Hieruit wil je alle andere item-ID's in die verzamelingen halen.
SELECT itemId
FROM wishLists
WHERE collectionId IN (above query)
AND itemId != 876
Dit kan worden herschreven als een 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
Nu kun je de herhalingen hiervan tellen om de meest voorkomende te vinden:
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
Voeg een LIMIT n
. toe clausule aan het einde om de top n items weer te geven.