MySQL: Kombinierte Abfrage

wal

Erfahrenes Mitglied
Hallo,

ich habe in einer HTML Seite 2 Eingabefelder, mit denen ich über 7 Spalten in der MySQl Tabelle suchen möchte. Nun bin ich dabei eine geschickte Abfrage dafür zu entwickeln ... komme aber nicht richtig weiter!?

Das Problem dabei ist, wenn in beide Felder gleichzeit Eintragungen passieren, wie kann ich die Abfrage dann möglichst gering halten.

Beispiel1:
In Feld 1 steht der Name
In Feld 2 steht ein Buchtitel

Jetzt möchte ich eine Abfrage über die 7 Spalten in der Tabelle starten, die mir nur die Treffer angezeigt, in denen in einer der 7 Spalten der eingebene Name und und in einer anderen Spalte des gleichen Datensatzes der Buchtitel steht. Die Felder sind also && verknüpft.

Beispiel2:
Feld1: Willi
Feld2: Der Dolle

Gefunden werden müssten die folgenden Datensätze:
Spalte1: kgkhgk
Spalte2: khkjh
Spalte3: Willi
Spalte4: Der Dolle
Spalte5: ggggg
Spalte6: edef
Spalte7: zzzz

Auch gefunden werden sollte:
Spalte1: Willi
Spalte2: dddd
Spalte3: rrt
Spalte4: ddff
Spalte5: ddff
Splate6: er3
Spalte7: Der Dolle

Nicht gefunden werden sollte:
Spalte1: Willi
Spalte2: dddd
Spalte3: rrt
Spalte4: ddff
Spalte5: ddff
Splate6: er3
Spalte7: ert

Ich hoffe das es einigermäßen verständlich ist! Bitte fragt kurz nach, wenn es unklar ist.

Ich bin auf der Suche nach etwas in der Form (stelle ich mir jedenfalls vor):

Select * FROM buch where Spalte1 LIKE '%Feld1% || %Feld2%' AND Spalte2 LIKE '%Feld1% || %Feld2%' .... etc.

Ich bin mir nicht sicher, ob es eine solche Syntax gibt oder irgendwie erstellt werden kann.

Vielen Dank für eure Tipps und Hilfen im voraus.
 
Wahrscheinlich meinst du sowas

SELECT...

WHERE

(
( Spalte1 LIKE '%xy%') OR
( Spalte2 LIKE '%xy%') OR ....

) AND
( SonstigeBedingung='abc')

aber Achtung

bei großen Tabellen bekommst Du mit LIKE "%xy%" unter Umständen Performance-Probleme, da hier kein Index helfen kann.

vop
 
Hi vop,

das war eine gute Idee ... vielen Dank! Ich denke es funktioniert so, jedenfalls haben die Tests bisher ihr Ziel erreicht! :p :)

Manchmal brauche ich halt einen Denkanstoss ... :rolleyes: Merci
 
Zurück