Mysql
 sql >> Database >  >> RDS >> Mysql

MYSQL/PHP trova l'elemento più comune associato a un determinato elemento

Inizia con una query che ottiene tutte le raccolte che contengono l'elemento selezionato:

SELECT collectionId
FROM wishLists
WHERE itemId = 876

Da questo, vuoi ottenere tutti gli altri itemId in quelle raccolte.

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

Questo può essere riscritto come un join:

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

Ora puoi contare le ripetizioni di questo per trovare quelle più comuni:

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

Aggiungi un LIMIT n clausola alla fine per mostrare i primi n elementi.