選択したアイテムを含むすべてのコレクションを取得するクエリから始めます。
SELECT collectionId
FROM wishLists
WHERE itemId = 876
これから、それらのコレクション内の他のすべてのitemIdを取得する必要があります。
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個のアイテムを表示するための最後の句。