Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Problema de correspondência de múltiplos interesses do MySQL


Isso é definitivamente possível com o MySQL, mas acho que você pode estar fazendo isso de uma maneira estranha. Eu começaria estruturando as tabelas da seguinte forma:
TABLE Users ( userId, username, location )
TABLE Interests( interestId, hobby )
TABLE UserInterests( userId, interestId, level )

Quando um usuário adiciona um interesse, se não tiver sido adicionado antes, você o adiciona aos Interests tabela e adicione-a ao UserInterests tabela. Quando você quiser verificar se há outras pessoas próximas com interesses semelhantes, você pode simplesmente consultar o UserInterests tabela para outras pessoas que tenham interesses semelhantes, que já tem todas essas informações para você:
SELECT DISTINCT userId
  FROM UserInterests
  WHERE interestId IN (
     SELECT interestId
       FROM UserInterests
       WHERE userId = $JoesID
     )

Isso provavelmente pode ser feito de uma maneira mais elegante, sem subconsultas, mas foi o que pensei agora.