Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MySQL Query mit Wenn bzw. If Funktion?

Frage Entwicklung Datenbanken

Mitglied: v3rtico

v3rtico (Level 1) - Jetzt verbinden

09.10.2008, aktualisiert 14.10.2008, 8095 Aufrufe, 11 Kommentare

Kann man in einer MySQL Abfrage eine Wenn bzw. If Anweisung angeben?

Und zwar habe ich in einer Abfrage folgende Bedingung:

01.
WHERE firma LIKE 'a%' OR firma LIKE 'b%' OR firma LIKE 'c%'
Jetzt kommt noch eine Bedingung hinzu, so dass es theoretisch wie folgt lauten soll:

01.
Wenn 'firma' nicht leer dann 
02.
WHERE firma LIKE 'a%' OR firma LIKE 'b%' OR firma LIKE 'c%' 
03.
sonst 
04.
WHERE nachname LIKE 'a%' OR nachname LIKE 'b%' OR nachname LIKE 'c%'
Allerdings konnte mir mein Büchlein über MySQL auch nicht weiter helfen. Könnt ihr mir vllt sagen ob und wie sowas möglich ist?

Viele Grüße,
Max
Mitglied: Logan000
09.10.2008 um 09:04 Uhr
Moin Moin

Die Funktion die du suchst heißt CASE.
Schau mal hier.

Gruß L.
Bitte warten ..
Mitglied: v3rtico
09.10.2008 um 09:20 Uhr
Kann ich die dann so anwenden?

01.
SELECT CASE firma WHEN NULL THEN WHERE firma LIKE 'a%' OR firma LIKE 'b%' OR firma LIKE 'c%'  
02.
ELSE WHERE nachname LIKE 'a%' OR nachname LIKE 'b%' OR nachname LIKE 'c%'
Bitte warten ..
Mitglied: mrtux
09.10.2008 um 11:05 Uhr
Hi !

wenn es nicht klappt bekommst Du ne Fehlermeldung, so einfach ist das.
Du arbeitest doch bestimmt nicht auf der Produktionsdatenbank oder ????

gruss
mrtux
Bitte warten ..
Mitglied: v3rtico
09.10.2008 um 11:10 Uhr
Nein es klappt nicht. Zwar bekomme ich keine Fehlermeldung, doch auch keine Ausgabe :/

Kann mir da jemand helfen, wie ich CASE und WHERE richtig verknüpfen kann?

@mrtux: Produktionsdatenbank? Ich weiß nicht was du damit meinst. So eine Art "Testdatenbank" für die Entwicklung? Die Datenbank mit der ich zur Zeit arbeite ist die die bereits im Einsatz und "Live" ist da ich eigentlich nur eine kleine Anpassung machen wollte, die sich dann doch als komplizierter erwies. Aber wenn ich das mit dem CASE und WHERE noch hin bekomme dann sollte ich damit endlich fertig sein ;)
Bitte warten ..
Mitglied: Logan000
09.10.2008 um 15:17 Uhr
Moin Moin

Ich sollte mir wirklich angewöhnen die Beiträge genauer zu lesen.
CASE funktioniert so nicht im WHERE part.
Deine WHERE Bedingung solltest Du auch mit AND/OR hinbekommen.
Etwas so:
01.
... 
02.
WHERE (firma <>'' AND (firma LIKE 'a%' OR firma LIKE 'b%' OR firma LIKE 'c%')) 
03.
OR 
04.
(nachname LIKE 'a%' OR nachname LIKE 'b%' OR nachname LIKE 'c%')
Bei "firma <>''" soltest du evtl. auch auf NULL prüfen.

Produktionsdatenbank? Ich weiß nicht was du damit meinst. So eine Art "Testdatenbank" für die Entwicklung?
Die Produktion ist das Echtsystem auf dem Real gearbeitet wird.
Auf diesem System testest Du meinen Code bitte nicht sondern auf einer Entwickungs (Test) DB.

Gruß L.
Bitte warten ..
Mitglied: v3rtico
09.10.2008 um 15:37 Uhr
Das Problem ist das ist ne Branchenbuchdatenbank. Wenn die Firma angegeben ist, dann soll nur nach der Firma mit dem Buchstaben gesucht werden. Nur wenn keine Firma angegeben ist, soll der Nachname des Inhabers genommen werden. Das geht nicht mit der einfachen "OR" denn da würde er ja immer nach dem Namen suchen.

Also angenommen jemand will alle Buchstaben "M". Dann findet der "Annette Mustermann" und die "Maurer AG". Gibt es aber die "Glaser AG" mit dem Besitzer "Max Muster" dann soll er die nur bei "G" finden.
Bitte warten ..
Mitglied: Logan000
09.10.2008 um 15:56 Uhr
Moin
Das geht nicht mit der einfachen "OR" denn da würde er ja immer nach dem Namen suchen.
Stimmt, also besser so:
01.
... 
02.
WHERE (firma <>'' AND (firma LIKE 'a%' OR firma LIKE 'b%' OR firma LIKE 'c%')) 
03.
OR 
04.
(firma ='' AND( nachname LIKE 'a%' OR nachname LIKE 'b%' OR nachname LIKE 'c%'))
Gruß L.
Bitte warten ..
Mitglied: v3rtico
10.10.2008 um 09:08 Uhr
Ah Danke, jetzt funktioniert das. Nur mit der Sortierung gibts noch ein paar Probleme. Meine Query sieht jetzt so aus:

01.
SELECT * 
02.
 
03.
FROM vc_branchenbuch 
04.
 
05.
WHERE (firma <>'' AND (firma LIKE 'a%' OR firma LIKE 'b%' OR firma LIKE 'c%')) 
06.
OR (firma ='' AND( nachname LIKE 'a%' OR nachname LIKE 'b%' OR nachname LIKE 'c%')) 
07.
 
08.
ORDER BY firma, nachname ASC
Und zwar zeigt er mir jetzt zuerst alle Einträge ohne Firma mit A, B und C im Nachnamen an und danach alle mit A, B und C in der Firma. Kann man die noch so sortieren, dass er mir alle Einträge nach den Buchstaben sortiert, egal, ob der Buchstabe im Name oder in der Firma steht?

Viele Grüße,
v3rtico aka Max
Bitte warten ..
Mitglied: Logan000
10.10.2008 um 13:39 Uhr
Moin Moin

Kann man die noch so sortieren, dass er mir alle Einträge nach den Buchstaben sortiert, egal, ob der Buchstabe im Name oder in der Firma steht?
Erstmal: Nein.
Du kannst nur pro Feld sortieren und bei mehreren Felder eine Rangfolge festlegen.
Es wäre natürlich möglich in deiner Abfrage ein Sortierfeld zu generieren.
z.B. so in der Art:
01.
SELECT *, 
02.
CASE WHEN firma='' THEN Nachname ELSE firma END AS OrderFeld 
03.
FROM vc_branchenbuch 
04.
WHERE (firma <>'' AND (firma LIKE 'a%' OR firma LIKE 'b%' OR firma LIKE 'c%')) 
05.
OR (firma ='' AND( nachname LIKE 'a%' OR nachname LIKE 'b%' OR nachname LIKE 'c%')) 
06.
ORDER BY OrderFeld ASC
Gruß L.
Bitte warten ..
Mitglied: v3rtico
14.10.2008 um 09:05 Uhr
Das hab ich probiert. Sobald ich aber die CASE Anweisung einfüge, werden mir gar keine Einträge ausgegeben. Ich hab da schon mit allem möglichen rumprobiert mit dem Orderfeld aber habs nicht hinbekommen.
Kann man das CASE Feld irgendwie anders erstellen?

Viele Grüße,
v3rtico aka Max
Bitte warten ..
Mitglied: Logan000
14.10.2008 um 16:23 Uhr
Moin Moin
Zitat von v3rtico:
Das hab ich probiert. Sobald ich aber die CASE Anweisung einfüge,
werden mir gar keine Einträge ausgegeben. Ich hab da schon mit
allem möglichen rumprobiert mit dem Orderfeld aber habs nicht
hinbekommen.
Kann man das CASE Feld irgendwie anders erstellen?
Nun meine Code Beispiele sind natürlich alle ungetestet, da ich keine keine MySQL DB zur Hand habe.
Wegen der genauen Syntax mus ich daher nochmal auf diesen Link verweisen.

Als Alternative zum CASEfällt mir nur noch sowas ein:
01.
SELECT *, CONCAT(firma, Nachname) as OrderFeld  
02.
FROM vc_branchenbuch 
03.
WHERE (firma <>'' AND (firma LIKE 'a%' OR firma LIKE 'b%' OR firma LIKE 'c%')) 
04.
OR (firma ='' AND( nachname LIKE 'a%' OR nachname LIKE 'b%' OR nachname LIKE 'c%')) 
05.
ORDER BY OrderFeld ASC
Einfach beide Felder als Textverketten und das Ergebnis sortieren.

Gruß L.
Bitte warten ..
Ähnliche Inhalte
PHP
MySQL Query funktioniert nicht
gelöst Frage von JeeroyPHP1 Kommentar

Hallo, hätte eine Frage zu MySQL Abfragen. Zur Schilderung meines Problems: ich habe 2 Tabellen (person & stadt): Jetzt ...

Datenbanken
MySQL - SELECT und IF in Funktion
gelöst Frage von mabue88Datenbanken2 Kommentare

Hallo, ist es möglich eine SELECT-Abfrage als Bedingung in einer IF-Abfrage zu verwenden? Das Problem löse ich aktuell so: ...

Python
Rückgabewert von MySQL-Funktion
gelöst Frage von NativeModePython4 Kommentare

Hallo, ich habe für eine mySQL-Abfrage eine eigene Funktion erstellt und abgespeichert: Soweit so gut, das funktioniert wenn ich ...

Datenbanken
MySQL - Funktion oder Trigger kontinuierlich ausführen
gelöst Frage von mabue88Datenbanken3 Kommentare

Hallo, gibt es in MySQL eine Möglichkeit, innerhalb einer MySQL-Datenbank eine Funktion oder einen Trigger zyklisch aufzurufen (alleine durch ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 10 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 14 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...