Mysql
 sql >> Base de données >  >> RDS >> Mysql

MYSQL/PHP trouve l'élément le plus courant associé à un élément donné

Commencez par une requête qui obtient toutes les collections contenant l'élément que vous avez sélectionné :

SELECT collectionId
FROM wishLists
WHERE itemId = 876

À partir de là, vous souhaitez obtenir tous les autres ID d'élément de ces collections.

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

Cela peut être réécrit comme une jointure :

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

Vous pouvez maintenant compter les répétitions de ceci pour trouver les plus courantes :

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

Ajouter un LIMIT n clause à la fin pour afficher les n premiers éléments.