PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Trefferquote aus MySQL-Suche ...


Innuendo1
28.01.2004, 10:33:38
Hallo an alle.

Folgende Ausgangssituation:
Es existieren drei Tabellen, die jeweils Nutzerdaten, dann Farben und dann die vom Nutzer gewählten Farben enthalten. Das sieht folgendermaßen aus (und ist hoffentlich selbsterklärend):

Tabelle 1:
user_id | user_name

Tabelle 2:
farbe_id | farbe_bezeichnung

Tabelle 3:
user_id | farbe_id

Der Nutzer wählt mehrere Farben aus, die Auswahl wird in der Tabelle 3 gesichert (damit er nicht bei jeder Suche die Farben neu auswählen muss). So ergeben sich mehrere Farbeinträge pro Nutzer.

Jetzt soll der Nutzer eine Farbauswahl treffen und dann nach anderen Nutzern suchen können, deren Farben mit den gewählten Farben des ersten Nutzers übereinstimmen (hoffentlich war das jetzt verständlich erklärt). Die Übereinstimmungen sollen dann prozentual geordnet dargestellt werden (höchste Trefferquote zuerst, niedrigste zuletzt).

Wie könnte man das bewerkstelligen?

Danke im Voraus.
Innuendo

Ted
02.02.2004, 00:40:11
Naja dein sql kann ich net loesen,
muesste mich damit beschaeftigen(lange)
aber dein % problem ist logisch,
nimm an du rundest
33.3
33.3 und
33.3
du erhaeltst jedes ,mal 33, waehren 33.3*3 99.9 ergibt ergibt 33*3 nur 99 und das ganze faellt extremer aus wenn du mehr eintraege hast, mit dem sql wende dich mal an nen sql guru und nicht ne papnase wie mich
Gruss Ted

feuervogel
02.02.2004, 01:39:03
hm, also ich lasse den beitrag von ted mal unkommentiert.

die frage, die ich habe, ist, wie denn die mehreren farben gespeichert werden? mit einem trennzeichen, und beim auslesen dann explode()?

du könntest einfach schauen, dass du für jede übereinstimmung einer farbe einen punkt an den user vergibst, und der mit den meisten punkten steht halt oben bei den ergebnissen...also wäre mein ansatz...

ja, man könnte dann auch noch die prozentrechnung ihren job tun lassen, und dann nach prozenten sortieren, wobei die rundungsverfälschung m.E. überhaupt keine rolle spielen würde...wäre aber überflüssig...