Esto definitivamente es posible con MySQL, pero creo que puede estar haciéndolo de una manera incómoda. Comenzaría estructurando las tablas de la siguiente manera:
TABLE Users ( userId, username, location )
TABLE Interests( interestId, hobby )
TABLE UserInterests( userId, interestId, level )
Cuando un usuario agrega un interés, si no se ha agregado antes, lo agrega a los Interests
y luego agréguelo a UserInterests
mesa. Cuando desee buscar otras personas cercanas con intereses similares, simplemente puede consultar los UserInterests
tabla para otras personas que tienen intereses similares, que ya tiene toda esa información para usted:
SELECT DISTINCT userId
FROM UserInterests
WHERE interestId IN (
SELECT interestId
FROM UserInterests
WHERE userId = $JoesID
)
Esto probablemente se pueda hacer de una manera más elegante sin subconsultas, pero es lo que pensé ahora.