Je souhaite mettre une recherche multi-critères sur un site communautaire, et là je bloque. J'aurais donc besoin de vos lumières.
Je vous explique la situation pour le moment:
J'ai une table user, avec owner / prenom / nom / latitude / longitude.
Et une table critères avec owner / id / values. Où id est égal au n° de critères, par ex id 5 pour les goût musicaux, id 7 pour le type de films etc... et values le style choisis
Donc par exemple pour l'owner n°1:
table user =
1 / pierre / richard / 1.568792 / 3.354862
table criteres =
1 / 5 / 3
1 / 5 / 5
1 / 5 / 8
1 / 7 / 6
1 / 7 / 9
Maintenant mon problème c'est de rechercher les utilisateurs qui se trouve dans une zone géographique, et avec id 5 = 8 et id 7 = 9
Donc ma requête pour le moment c'est:
SELECT tab1.owner FROM users as tab1 INNER JOIN criteres as tab2 ON tab1.owner = tab2.owner WHERE ((tab1.latitude BETWEEN 1 AND 2) AND (tab1.longitude BETWEEN 3 AND 4)) AND ((tab2.id = 5 AND tab2.values = 8) AND (tab2.id = 7 AND tab2.values = 9))
Et là logiquement ça ne me donne rien, il faut que je remplace ((tab2.id = 5 AND tab2.values = 8) AND (tab2.id = 7 AND tab2.values = 9)) par ((tab2.id = 5 AND tab2.values = 8) OR (tab2.id = 7 AND tab2.values = 9)).Maintenant ça marche, mais le problème, c'est que je n'ai besoin que seulement un seul des 2 critères soit vérifier.
Où autrement je peux faire un INNER JOIN pour chaque critères. Là pour 2 critères c'est envisageable mais si j'en ai beaucoup plus ça pourrait vite être le bordel.
Donc voilà où j'en suis pour le moment. J'espère avoir était assez clair, et si vous avez une idée ou d'autres solutions je suis preneur.
Merci