Seite 1 von 1

[SQL] ...WHERE "row" like "foo"

Verfasst: 17.10.2007 17:10
von gekkonier
Hallo, ich habe ein Programm, welches Mysql5 als Datenbank verwendet.
Ich bin gerade dabei einen Suchmechanismus zu bauen, der ca. wie folgt funktioniert:

Tabelle personen

Code: Alles auswählen

id | vorname | nachname
------------------------
1  | Peter   | Schilling
2  | Franz   | Lustig
Nehmen wir mal an, wir möchten jemand darin suchen, der Schilling im Nachnamen heisst könnte ich das so formulieren:

Code: Alles auswählen

SELECT * FROM personen WHERE nachname LIKE 'schilling'
Wenn ich jetzt aber nicht weiss, ob der im Vornamen oder im Nachnamen Schilling heisst muss ich folgendes machen:

Code: Alles auswählen

SELECT * FROM personen WHERE vorname LIKE 'schilling' OR nachname LIKE 'schilling'
Gibt es hier eigentlich die Möglichkeit zu sagen (pseudo):

SELECT * from personen WHERE "row" like 'schilling'?

Verfasst: 17.10.2007 17:27
von Fluid Byte
Wenn ich jetzt aber nicht weiss, ob der im Vornamen oder im Nachnamen Schilling heisst muss ich folgendes machen:
Wenn du das nicht weisst hast du schon beim einlesen der Daten einen Fehler gemacht bzw. wenn die Daten bspw. per Formular eingegeben werden der User. Entweder es befindet sich der gesuchte Nachname in der gleichnamigen Spalte oder nicht. Du kannst ja nicht raten.

Verfasst: 17.10.2007 17:38
von gekkonier
Nochmal:

Ich habe z.B. eine Tabelle mit 2 Spalten (ausser ID)

Jetzt könnte ein Suchbegriff eingegeben werden (Barbara, Tintifax, Trallalla, völlig wurscht!)

Ich suche eine Where Direktive, die über die 2 Spalten sucht.

Ich will nicht explizit angeben müssen ob des jetzt ein Vorname oder Nachname ist - die Tabelle könnte auch 100 Spalten theoretisch haben....

Natürlich könnte ich in einem Schritt davor alle Spaltennamen auslesen und einen String für die Abfrage generieren, aber ich bin ja eher pragmatisch.

Verfasst: 17.10.2007 17:40
von TomS
Nö. Aber man könnte die gesamte DB durchsuchen. In allen Feldern^^
Und nein es gibt keine andere Möglichkeit, außer jede Spalte abzufragen
also ist der zweite Code von dir, der einzige der funktioniert

Verfasst: 17.10.2007 17:42
von gekkonier
Gut, danke, dann werd ich Abfragestrings generieren ;)

Danke!

Verfasst: 17.10.2007 18:45
von bobobo
es geht immer auch irgendwie anders

mysql . .glaub ich

select * from tabelle where concat (vorname,nachname) like '%hansi%'

findet hansi hinterseer und Michael Hansichen und
und auch Stephan Siegelschmid

Verfasst: 17.10.2007 21:46
von Fluid Byte
Das ist was anderes bobobo. Er will die Spalten nicht alle einzeln angeben müssen.

Verfasst: 17.10.2007 22:40
von gekkonier
Jupp, das war der Plan ;)

Habe es jetzt so gelöst, dass ich mir zuerst die Spaltennamen auslese, dann das Select Statement generiere und so dann weitermache.

Wenn es gehen würde wie ich beschrieben habe hätt ich mir 3-4 Zeilen Code gespart und gleichzeitig was gelernt :lol:

Verfasst: 18.10.2007 13:12
von bobobo
Fluid Byte hat geschrieben:Das ist was anderes bobobo. Er will die Spalten nicht alle einzeln angeben müssen.
genau das MUSS er aber ..

ne abfrage wie : 'EH DBMS, GIB MIR MAL EIN ERGEBNIS VON DEM WAS
ICH WILL DIR ABER NICHT VERRATE' wird schlecht ein ergebnis liefern
können.


wie auch immer
mir ging's da eher ums ergebnis, weshalb das gar nichts anderes ist
sondern ne lösung des problems.