Trefferspalten bei MySQL-Abfrage ermitteln
Hexe
- datenbank
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
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
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 :)