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.