Georg Müller: MySQL SELECT

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

  1. 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)