Hexe: Trefferspalten bei MySQL-Abfrage ermitteln

Hallo!

Ich verwende eine MySQL 5.1 Datenbank mit PHP 5.3 und habe ein Problem mit der Performance einer Abfrage.

Es sind in der entsprechenden Tabelle einige Spalten mit Text, die ich mit einem Suchbegriff im Volltext durchsuchen möchte, beispielsweise Spalte1, Spalte2, Spalte3 usw. Meine Abfrage müsste also lauten "WHERE Spalte1 LIKE '%$suchbegriff%' OR Spalte2 LIKE '%$suchbegriff%'" usw.

Das Problem ist, dass ich im Ergebnis unbedingt wissen muss, welche Spalte das Ergebnis geliefert hat. Ich würde gern in jeder Ergebniszeile eine Spalte mit dem Namen der betreffenden Spalte haben. Im Moment löse ich es mit mehreren Abfragen, die so aussehen:
"SELECT '$spalte' AS spalte, * FROM tabelle WHERE spalte LIKE '%$suchbegriff%'"
Aber so muss ich für jede Spalte eine eigene Abfrage machen, worunter die Performance extrem leidet.

Gibt es eine Möglichkeit, eine einzige Abfrage abzusetzen und im Nachhinein zu überprüfen, mit welcher Spalte die Übereinstimmung erzielt wurde?

Vielen Dank im Voraus und schöne Grüße
Hexe

  1. Hi,

    Gibt es eine Möglichkeit, eine einzige Abfrage abzusetzen und im Nachhinein zu überprüfen, mit welcher Spalte die Übereinstimmung erzielt wurde?

    Du kannst zusätzlich zur Abfrage der jeweiligen noch ein IF-Statement o.ä. einbauen, welches den Namen der Spalte liefert, wenn der Begriff darin gefunden wurde, und alternativ NULL oder einen Leerstring.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Du kannst zusätzlich zur Abfrage der jeweiligen noch ein IF-Statement o.ä. einbauen, welches den Namen der Spalte liefert, wenn der Begriff darin gefunden wurde, und alternativ NULL oder einen Leerstring.

      MfG ChrisB

      Dass MySQL auch IF-Statements versteht, wusste ich noch nicht. Es sieht ganz so aus, als könnte ich dieses Konstrukt tatsächlich für meine Abfrage verwenden. Vielen Dank :)