Detta är definitivt möjligt med MySQL, men jag tror att du kanske gör det på ett besvärligt sätt. Jag skulle börja med att strukturera tabellerna enligt följande:
TABLE Users ( userId, username, location )
TABLE Interests( interestId, hobby )
TABLE UserInterests( userId, interestId, level )
När en användare lägger till ett intresse, om det inte har lagts till tidigare, lägger du till det i Interests
tabell och lägg sedan till den i UserInterests
tabell. När du vill söka efter andra personer i närheten med liknande intressen kan du helt enkelt fråga UserInterests
tabell för andra personer som har liknande intressen, som redan har all den informationen för dig:
SELECT DISTINCT userId
FROM UserInterests
WHERE interestId IN (
SELECT interestId
FROM UserInterests
WHERE userId = $JoesID
)
Detta kan förmodligen göras på ett mer elegant sätt utan underfrågor, men det är vad jag tänkte på nu.