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.