MySQL SELECT
Georg Müller
- datenbank
0 klaus
Ja Hallöschen,
hab mich mal ein bischen in PHP + MySQL reingearbeitet, und mir da eine schöne Linksammlung aufgebaut - und bin natürlich auf ein kleines Problem gestossen :-))
folgende Tabelle existiert:
pos url titel kurztext
-------------------------------------------------------------------
0 http://www.bla.de Bla auf Reisen Beschreibung zu bla
1 http://www.blu.de Blu zu Hause Home sweet Home
...
möchte nun mit einem query alle 3 Kategorien (url,titel,kurztext) nach beliebig vielen Wörtern verbunden mit AND durchsuchen
z.B.
www AND Reisen AND Beschreibung - sollte mir die 1. Zeile bringen
www AND bla AND de AND zu - wieder 1.
de AND www - sollte mir beide 1. und 2. geben
Home AND Hause - 2. Zeile
etc.
Hab das Problem nun vorerst gelöst indem ich alles in eine Spalte "Volltext" kopiere und diese durchsuche mit der AND Verknüpfung - Tabelle wird aber dadurch unnütz groß!!! Muß doch anders gehen!!!!
Irgendwelche Vorschläge?
Dank im Voraus
hallo,
vielleicht gehts mit:
select pos,url,titel,kurztext,concat(url,' ',titel,' ',kurztext) as volltext from tabelle
where volltext like '%suche1%'
and volltext like '%suche2%'
and volltext like '%suche3%'
...
ungetestet in jeder art und weise, obs überhaupt funktioniert und wie die performance bei größeren datenbeständen ist
außerdem gibt da noch
where volltext REGEXP 'hier_muß_noch ne schlaue_regex_her'
viel spaß beim tüfteln
klaus
ps.: quelle ist O'reilly's 'MySQL &mSQL'
pps.: in anderen datenbanken muß Du das verüketten der strings anders machen 8z.B.: Oracle string1 string2 string3)