Abrufen von MySQL-Datensätzen basierend auf einer Variablenmenge von Vergleichspunkten

8

Nehmen wir an, ich habe eine MySQL-Tabelle, people . Jeder Datensatz umfasst eine Reihe von Eigenschaften, darunter favourite_colour , country und age_group .

Ich möchte Datensätze aus dieser Tabelle anhand ihrer Ähnlichkeit mit einer Reihe spezifischer Parameter abrufen. Bei "Red", "United States" und "18-25" wären beispielsweise die besten Ergebnisse diejenigen, die mit allen drei übereinstimmen. Dies wären 100% Übereinstimmungen.

Ich möchte jedoch auch Datensätze abrufen, die mit einer beliebigen Kombination aus zwei Parametern (66% Übereinstimmung) oder einem beliebigen Parameter (33% Übereinstimmung) übereinstimmen. Außerdem wäre ich gerne in der Lage zusätzliche Vergleichspunkte zu definieren (z. B. underwear_type , marital_status , etc.).

Gibt es eine relativ effiziente Lösung für dieses Problem?

    
Daniel Wright 09.06.2009, 03:20
quelle

2 Antworten

11

Ja, Sie können jeden Vergleich wie favourite_colour='Red' & amp; c in einen Wert von 0 (false) oder 1 (true) umwandeln - mysql tut dies implizit, aber aus Gründen der Allgemeinheit möchten Sie vielleicht CAST( (favourite_colour='Red') AS INTEGER) & amp; c; dann haben Sie% all diese, also

%Vor%

gibt dir zuerst perfekte Übereinstimmungen, dann 2 von 3; leicht generalisierbar für noch mehr Kontrollen! -)

    
Alex Martelli 09.06.2009, 03:29
quelle
0

Für die drei ersten ist einfach:

%Vor%

Ich verstehe den "zusätzlichen Vergleichspunkt" -Teil nicht, können Sie das erklären?

    
tekBlues 09.06.2009 03:29
quelle

Tags und Links