Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL/PHP finden die häufigsten Elemente, die mit einem bestimmten Element verknüpft sind

Beginnen Sie mit einer Abfrage, die alle Sammlungen abruft, die das ausgewählte Element enthalten:

SELECT collectionId
FROM wishLists
WHERE itemId = 876

Daraus möchten Sie alle anderen itemIds in diesen Sammlungen abrufen.

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

Dies kann als Join umgeschrieben werden:

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

Jetzt können Sie die Wiederholungen davon zählen, um die häufigsten zu finden:

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

Fügen Sie ein LIMIT n hinzu Klausel am Ende, um die Top-n-Elemente anzuzeigen.