Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL Problème de correspondance d'intérêts multiples

C'est certainement possible avec MySQL, mais je pense que vous vous y prenez peut-être de manière maladroite. Je commencerais par structurer les tableaux comme suit :

TABLE Users ( userId, username, location )
TABLE Interests( interestId, hobby )
TABLE UserInterests( userId, interestId, level )

Lorsqu'un utilisateur ajoute un centre d'intérêt, s'il n'a pas été ajouté auparavant, vous l'ajoutez aux Interests table, puis ajoutez-la au UserInterests table. Lorsque vous souhaitez rechercher d'autres personnes à proximité ayant des intérêts similaires, vous pouvez simplement interroger le UserInterests tableau pour d'autres personnes ayant des intérêts similaires, qui contient déjà toutes ces informations pour vous :

SELECT DISTINCT userId
  FROM UserInterests
  WHERE interestId IN (
     SELECT interestId
       FROM UserInterests
       WHERE userId = $JoesID
     )

Cela peut probablement être fait de manière plus élégante sans sous-requêtes, mais c'est ce à quoi j'ai pensé maintenant.