sql >> Base de Datos >  >> RDS >> Mysql

MYSQL/PHP encuentra el elemento más común asociado con un elemento dado

Comience con una consulta que obtenga todas las colecciones que contienen el elemento que seleccionó:

SELECT collectionId
FROM wishLists
WHERE itemId = 876

A partir de esto, desea obtener todos los demás elementos Id en esas colecciones.

SELECT itemId
FROM wishLists
WHERE collectionId IN (above query)
AND itemId != 876

Esto se puede reescribir como una unión:

SELECT a.itemId
FROM wishLists AS a
JOIN wishLists AS b ON a.collectionId = b.collectionId
WHERE a.itemId != 876 AND b.itemId = 876

Ahora puedes contar las repeticiones de esto para encontrar las más comunes:

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

Agrega un LIMIT n cláusula al final para mostrar los primeros n elementos.