sql >> Database >  >> RDS >> Mysql

MYSQL/PHP vind het meest voorkomende item dat geassocieerd wordt met een bepaald item

Begin met een zoekopdracht die alle collecties ophaalt die het item bevatten dat u hebt geselecteerd:

SELECT collectionId
FROM wishLists
WHERE itemId = 876

Hieruit wil je alle andere item-ID's in die verzamelingen halen.

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

Dit kan worden herschreven als een 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

Nu kun je de herhalingen hiervan tellen om de meest voorkomende te vinden:

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

Voeg een LIMIT n . toe clausule aan het einde om de top n items weer te geven.




  1. SQL SELECTEER EN Operator

  2. Bestandsopslag voor webtoepassingen:bestandssysteem versus DB versus NoSQL-engines

  3. Wat is het verschil tussen een Oracle- en Microsoft-schema?

  4. Hoe kan ik toestaan ​​dat een parameter in een vervolgkeuzelijst in SSRS een standaardwaarde heeft van -- All -- ?