Disons que j'ai une table MySQL, people
. Chaque enregistrement comprend une variété de propriétés, parmi lesquelles favourite_colour
, country
et age_group
.Récupération des enregistrements MySQL en fonction d'un ensemble de points de comparaison variable
Ce que je voudrais faire est de récupérer des enregistrements de cette table par leur similitude avec un ensemble de paramètres spécifiques. Étant donné «Red», «United States» et «18-25», par exemple, les meilleurs résultats seraient ceux qui correspondent aux trois. Ce seraient des correspondances à 100%.
Cependant, j'aimerais également récupérer les enregistrements qui correspondent à n'importe quelle combinaison de deux paramètres (correspondance de 66%) ou d'un paramètre quelconque (correspondance de 33%). De plus, j'aimerais pouvoir définir des points de comparaison supplémentaires (par exemple underwear_type
, marital_status
, etc.).
Y a-t-il une solution relativement efficace à ce problème?
C'est assez intelligent! –
C'est en effet une très bonne idée. Il serait facile d'ajouter une pondération à cela en multipliant l'un des résultats. –
C'est en effet une excellente solution. Quelques notes/questions: d'après ce que je peux dire, SQL n'autorise pas les alias de colonnes (ie match_score) dans les clauses WHERE. En outre, je ne pense pas que SUM() se comporte comme votre requête le suggère (il n'accepte pas plusieurs arguments); La documentation de MySQL indique que SUM() est une fonction d'agrégation GROUP BY uniquement. En supprimant la clause WHERE et en remplaçant la somme par des opérateurs d'addition, la fonction fonctionne comme un charme. –