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

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

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

Beitrag 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'?
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Beitrag 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.
Zuletzt geändert von gekkonier am 17.10.2007 17:41, insgesamt 1-mal geändert.
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag 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
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Beitrag von gekkonier »

Gut, danke, dann werd ich Abfragestrings generieren ;)

Danke!
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Das ist was anderes bobobo. Er will die Spalten nicht alle einzeln angeben müssen.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Beitrag 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:
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten