Začněte dotazem, který získá všechny kolekce obsahující vybranou položku:
SELECT collectionId
FROM wishLists
WHERE itemId = 876
Z toho chcete získat všechna ostatní itemId v těchto kolekcích.
SELECT itemId
FROM wishLists
WHERE collectionId IN (above query)
AND itemId != 876
Toto lze přepsat jako spojení:
SELECT a.itemId
FROM wishLists AS a
JOIN wishLists AS b ON a.collectionId = b.collectionId
WHERE a.itemId != 876 AND b.itemId = 876
Nyní můžete počítat jeho opakování, abyste našli ty nejběžnější:
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
Přidejte LIMIT n
klauzule na konci pro zobrazení horních n položek.