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

Problem z dopasowaniem wielu zainteresowań w MySQL

Jest to zdecydowanie możliwe w przypadku MySQL, ale myślę, że możesz zajmować się tym w niezręczny sposób. Zacząłbym od uporządkowania tabel w następujący sposób:

TABLE Users ( userId, username, location )
TABLE Interests( interestId, hobby )
TABLE UserInterests( userId, interestId, level )

Gdy użytkownik dodaje zainteresowanie, jeśli nie było wcześniej dodane, dodajesz je do Interests tabeli, a następnie dodaj ją do UserInterests stół. Jeśli chcesz sprawdzić, czy w pobliżu nie ma innych osób o podobnych zainteresowaniach, możesz po prostu zapytać o UserInterests tabela dla innych osób o podobnych zainteresowaniach, która zawiera już wszystkie te informacje:

SELECT DISTINCT userId
  FROM UserInterests
  WHERE interestId IN (
     SELECT interestId
       FROM UserInterests
       WHERE userId = $JoesID
     )

Prawdopodobnie można to zrobić w bardziej elegancki sposób bez podzapytań, ale właśnie o tym pomyślałem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql 5.7 Funkcja Domyślne sortowanie UUID() - Niedozwolona mieszanka sortowań

  2. Jak wykryć nadmiarowe wiersze w tabeli?

  3. SQL:Wybierz klucze, które nie istnieją w jednej tabeli

  4. Obliczanie, które punkty (szerokość, długość geograficzna) znajdują się w określonej odległości w mysql?

  5. Jak usunąć zduplikowaną wartość oddzieloną przecinkami w jednej kolumnie w MySQL?