SQL Like Abfrage

S

StephanSch

Aktives Mitglied
Thread Starter
Dabei seit
24.07.2006
Beiträge
406
Reaktionspunkte
1
Ich habe momentan folgende Datenbankabfrage (in der $join variable werden weitere left joins dynamisch erzeugt). Ich möchte allerdings nun Abfragen, ob in irgendeinem Feld einer gejointen Zeile, die Suchanfrage $submission[0] vorhanden ist. Muss ich nun alle Einzelfelder generieren und jedesmal schreiben WHERE projekt_titel LIKE '%".mysql_real_escape_string($submission[0])."%' OR projekt_art LIKE '%".mysql_real_escape_string($submission[0])."%' OR ??? ..... das sind über 100 Felder, die die SQL pro Zeile prüfen muss....
Gibt es da auch einen SQL Befehl, der das für mich erledigt?


Code:
SELECT SQL_CALC_FOUND_ROWS
	*
FROM 
	library
INNER JOIN
	meta ON library_meta = meta_refid
INNER JOIN
	projekt ON library_projekt = projekt_refid
".$join."
WHERE
	projekt_titel LIKE '%".mysql_real_escape_string($submission[0])."%'
GROUP BY
	library_id
ORDER BY 
	meta_projektnummer DESC				
LIMIT ".mysql_real_escape_string($global["searchEngine"]["start"]).", ".mysql_real_escape_string($global["searchEngine"]["length"])."
 
Wenn ich es richtig verstanden habe genügt es die Felder in einem zusammenzufassen. (Zumindest funktioniert das bei MS-SQL )
Bsp.:
Select
ISNULL(tabelle1.feld1, '') +
ISNULL(tabelle1.feld2, '') +
...
ISNULL(tabelle1.feldx, '') AS durchsuchmichfeld
where
druchsumichfeld like '%ausdruck%'
 
Nun ja, dann würde ich die ganzen Felder eben im Select Bereich gruppieren, anstatt in der Where Clause, das macht ja letztlich kein großen Unterschied?

Ich suche so etwas (in Worten ausgedrückt):
  • Füge alle angegeben Tabellen zusammen, wenn die Referenz-Id übereinstimmt (funktioniert)
  • Suche in allen Feldern der neuen zusammengefügten Tabelle nach einem Suchbegriff
 
So müsste es ja gehen:
WHERE
CONCAT(projekt_titel, projekt_name, feldx...) LIKE '%".mysql_real_escape_string($submission[0])."%'

Allerdings ergibt das concat immer NULL sobald er irgendein Feld nicht findet...gibt es da eine Option dafür, das abzustellen?
 
Für die NULL Problematik habe ich in meinem Beispiel ISNULL() eingebaut.
 
Zurück
Oben Unten