sql >> Base de Datos >  >> RDS >> Mysql

MySQL Problema de coincidencia de intereses múltiples

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.