PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [MySQL] Query für Such-Token gesucht


BoneDaddy
2009-03-02, 15:30:47
Hi!
Vorgabe ist, dass am Datenbankschema nichts geändert wird

Ich haben folgenden Datensatz:
Name | Hobbys
Ich | Laufen, Joggen, Schwimmen
Du | Boxen, Disko, Laufen
Er | Frauen, Boxen, Fernsehen

Wenn ich nun eine Suche nach "Laufen" abschicke, sollen alle Datensätze mit dem Begriff "Laufen" ausgewählt werden.
Es besteht jedoch für die Suchfunktion auch die Möglichkeit mehrere Suchbegriffe abzuschicken, die dann mit Komma getrennt werden. Eine Suche nach "Ich, Laufen" sollte also als Ergebnis sowohl alle Personen zeigen, die "Ich" heißen aber auch alle die als Hobby "Laufen" aufgeführt haben.

Freue mich über Tipps!

daflow
2009-03-02, 16:10:34
Was bedeutet für dich am "Schema" darf nix verändert werden -> Die Datenstruktur darf nicht verändert werden? Eigentlich wäre das nämlich der richtige Ansatz... ordentlich normalisieren und mehrere Tabellen draus machen
Seis drum, so wirst du da mit Programmlogik aussenrum dran gehen müssen, die ',' rausfischen und dir daraus einen entsprechenden SQL generieren lassen
-> select blasfasel from blub
Where Name like '%$1%'
or Name like '%$2%'
...
or Hobby like '%$1%'
or Hobby like '%$2%'
...

BoneDaddy
2009-03-02, 16:18:17
Genau,
eigentlich müsste das Schema auseinander gebaut werden, aber dies ist eben momentan nicht möglich, bzw. nicht gestattet. Bei wohl wirklich nur dreckeige Handarbeit.

daflow
2009-03-02, 16:20:07
Dann wirst du nur mit Bastelprogrammierlösung s.o. zum "Ziel" kommen, wobei du halt, wenns nur ein Suchfenster gibt, eben jeden Begriff sowohl in Hobby als auch in Name suchen lassen musst ;(

rotalever
2009-03-02, 16:23:28
Seis drum, so wirst du da mit Programmlogik aussenrum dran gehen müssen, die ',' rausfischen und dir daraus einen entsprechenden SQL generieren lassen
-> select blasfasel from blub
Where Name like '%$1%'
or Name like '%$2%'
...
or Hobby like '%$1%'
or Hobby like '%$2%'
...
Das wird dann leider aber recht langsam... Warum ist es nicht möglich 2 Tabellen daraus zu machen?

daflow
2009-03-02, 16:27:18
Das wird dann leider aber recht langsam... Warum ist es nicht möglich 2 Tabellen daraus zu machen?


Es ist weder schön noch performant... wobei mir das jetzt spontan nich nach 'ner Tabelle mit Mio. von Rows klingt und der Performancepunkt bei 'ner handvoll Datensätzen eher weniger zu Buche schlägt ;)