Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MYSQL/PHP znajdź najczęściej skojarzony element z danym elementem

Zacznij od zapytania, które pobiera wszystkie kolekcje zawierające wybrany element:

SELECT collectionId
FROM wishLists
WHERE itemId = 876

Z tego chcesz uzyskać wszystkie inne identyfikatory przedmiotów w tych kolekcjach.

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

Można to przepisać jako sprzężenie:

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

Teraz możesz policzyć powtórzenia tego, aby znaleźć najczęstsze:

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

Dodaj LIMIT n klauzula na końcu, aby pokazać n pierwszych pozycji.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zlokalizuj pozycję tekstu, wyodrębnij tekst i wstaw w nowej kolumnie w MySQL

  2. Tabela MySQL z wieloma wartościami w jednym polu

  3. Zaktualizować kolumnę sygnatury czasowej w aplikacji lub bazie danych?

  4. Nie można było nawiązać połączenia, ponieważ maszyna docelowa aktywnie je odrzuciła (PHP / WAMP)

  5. Najlepsza wydajna metoda łączenia MySQL z PHP?