Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MYSQL/PHP encontra o item mais comum associado a um determinado item


Comece com uma consulta que obtenha todas as coleções que contêm o item selecionado:
SELECT collectionId
FROM wishLists
WHERE itemId = 876

A partir disso, você deseja obter todos os outros IDs de item nessas coleções.
SELECT itemId
FROM wishLists
WHERE collectionId IN (above query)
AND itemId != 876

Isso pode ser reescrito como uma junção:
SELECT a.itemId
FROM wishLists AS a
JOIN wishLists AS b ON a.collectionId = b.collectionId
WHERE a.itemId != 876 AND b.itemId = 876

Agora você pode contar as repetições disso para encontrar as mais comuns:
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

Adicione um LIMIT n cláusula no final para mostrar os n principais itens.