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

Frage Entwicklung PHP

GELÖST

MySQL IF Abfrage

Mitglied: datadexx

datadexx (Level 1) - Jetzt verbinden

20.03.2013 um 19:36 Uhr, 6448 Aufrufe, 10 Kommentare, 1 Danke

Hallo Leutz,

ich hab wieder ein Problem mit einer MySQL Abfrage.

Ich möchte in einer Abfrage prüfen ob ein Feld leer ist (also '') und wenn es leer ist soll eine Abfrage von anderen Feldern durchgeführt werden. Ist es nicht leer sollen die Abfrage nicht ausgeführt werden. Die Abfrage hat auch noch nen Join.

Ein Beispiel:

SELECT xy,
CONCAT( xyz,WENN XYZ ='' abz,dfg abfragen sonst abz,dfg nicht abfragen und weiter machen),
txt,
sbs

FROM tabelle LEFT JOIN bla bla usw.
WHERE dies und das

Keinen Plan wie ich das machen soll.

Danke für Hilfe!!!!

Greetz
Mitglied: LianenSchwinger
20.03.2013 um 20:29 Uhr
Hallo,

um zu prüfen, ob ein Feld leer ist bedient man sich des NULL-Operators.
In Deinem Fall ohne viel bla bla:

01.
xyz IS NULL
G Jörg
Bitte warten ..
Mitglied: filippg
20.03.2013 um 20:36 Uhr
Hallo,

okay - und wo ist jetzt die Frage?
Bei Problemen bei der Verwendung der IF-Funktion würde ich die Referenz empfehlen:
http://dev.mysql.com/doc/refman/5.1/de/control-flow-functions.html

Auf NULL hat Jörg schon hingewiesen - aus Sicht einer DB gibt es "" (leere Zeichenkette) und NULL (kein Wert definiert).

Gruß

Filipp
Bitte warten ..
Mitglied: datadexx
20.03.2013 um 20:43 Uhr
Hab ich probiert, geht nicht. Das Problem ist das ich eine rückwärts Kompatibilität zu alten Daten benötige. Da gibt es das Feld Ladung in den alten Daten, welches durch die neuen inserts nicht mehr befüllt wird und somit leer bleibt. Es steht aber auch nicht Null drin. Es ist leer. Wenn ich Daten aus dem alten bestand betrachten will muss das Feld abgefragt werden, nicht aber die neuen Felder. Wenn ich den neuen Datenbestand Abfrage ist das Feld Ladung ja leer und nur dann sollen die neuen Felder abgefragt werden. Und das alles muss in einer select passieren.

Noch ne Idee jemand?
Bitte warten ..
Mitglied: LianenSchwinger
20.03.2013 um 20:50 Uhr
... wenn in einem Feld nichts drin steht dann steht da NULL drin. NULL ist nicht gleich Null oder 0!

Und bei der kruden Beschreibung soll einer schlau werden. Stehn die alten und neuen Daten in ein und der selben Tabelle?
Wenn ja dann mach einen JOIN mit sich selbst und prüft das Feld Ladung der gejointen Tabelle auf "IS NULL".

G Jörg
Bitte warten ..
Mitglied: exchange
20.03.2013 um 22:44 Uhr
Hallo,
nur mal zu Info, NULL und "" sind zwei paar Schuhe. Man kann sehr wohl in ein varchar Feld nichts reinschreiben. Das gehört sich aber nicht ;)

Es gibt Funktionen und Proceduren in MySQL. Damit solltest Du dich beschäftigen.

Gruß
Heiko
Bitte warten ..
Mitglied: nxclass
21.03.2013, aktualisiert um 08:54 Uhr
01.
SELECT 
02.
  IF(`xzy` IS NULL OR `xzy` = '', CONCAT( `abz`, `dfg` ), NULL ) AS 'myresult' 
03.
... 
04.
 
05.
/* entweder: */ 
06.
WHERE 
07.
  (`xzy` IS NULL OR `xzy` = '') 
08.
/* oder: */ 
09.
... 
10.
HAVING 
11.
  `myresult` IS NOT NULL
bin mir nicht sicher ob ich verstanden habe was Du möchtest - aber das Prinzip sollte klar sein.
Weiterhin würde ich dir empfehlen mit einem UPDATE die Daten auf einen einheitlichen Stand zu bringen.
Bitte warten ..
Mitglied: datadexx
21.03.2013 um 09:04 Uhr
Moin Jungs!

Die Daten stehen in der selben Tabelle. Ich versuche es mal so genau wie möglich zu beschreiben.

Die DB Tabelle nennt sich aauftrag wo durch ein Formular Daten zu einem Transportauftrag eingertragen werden.

In dem Formular gab es vorher das Eingabefeld "Ladung" wo z.B. sowas wie "17 H1 Pal. Saatgut 12000kg" eingetragen wurde. Dieser String landete in der DB im Feld "ladung" welches ein varchar ist.

Im Formular wurde das Feld "Ladung" mit neuen Eingabefeldern ersetzt und zwar durch "Anzahl", "Lademeter", "Lademittelart", "Warenart" und "Gewicht". Entsprechend wurden in der DB Tabelle aaauftrag 5 neue Felder eingefügt die gleichnamig heißen. Der Insert Befehl des Formulars befüllt nun nur noch die neuen Felder, nicht mehr das Feld "Ladung". Ein weiters Script generiert mit einer Select Abfrage aus den Daten der Tabelle aauftrag einen druckbaren Transportauftrag. Um auch noch die Transportaufträge der alten Version ansehen und ausdrucken zu können wird in der Selectabfrage das Feld "Ladung" benötigt + die neuen Felder. Die Daten der neuen Felder werden mit CONCAT zusammengeführt und es wird mit CASE abgefragt ob diese leer sind. Wenn leer wird nichts ausgegeben ansonsten der Inhalt des Feldes. Das muss so sein, da entweder im Formular Anzahl oder Lademeter angegeben wird und es soll nicht beides auf dem Transportauftrag stehen, denn mit dem Concat werden an Anzahl ein"x" angehangen und an Lademeter ein "ldm." und an Gewicht ein "kg".

Bisher sieht das so aus:

SELECT
posten.datum,
posten.transanr,
CONCAT ( posten.bezeichnung,'<br>', aauftrag.ladung,
CASE WHEN aauftrag.anzahl ='' THEN '' ELSE CONCAT(anzahl,'x&nbsp;'),
CASE WHEN aauftrag.ldm='' THEN '' ELSE CONCAT(ldm,'ldm&nbsp;'),
usw.

Funktionieren tut die Abfrage für Transportaufträge mit den neuen Daten, nicht aber für die wo die Daten noch im Feld "Ladung" stehen, dort bleibt die CONCAT abfrage leer, gibt also in der Druckversion nichts aus. Entferne ich die Abfrage für die neuen Felder wird mir der Inhalt des Feldes "Ladung" auch wieder angezeigt. Daher stammt die Idee die neuen felder nur abfragen zu lassen, wenn aauftrag.ladung leer ist und ansonsten nicht. Problem ist halt auch, dass das in die CONCAT rein muss da es sonst das Drucklayout zerschiesst. Also im CONCAT muss geprüft werden ob aauftrag.ladung leer ist, wenn ja die anderen Felder abfragen und wenn nicht leer nur aauftrag.ladung abfragen und den rest nach dem CONCAT.

Hoffe ich konnte es so genau wie möglich beschreiben, damit ihr was damit anfangen könnt.

Greetz
Bitte warten ..
Mitglied: LianenSchwinger
21.03.2013, aktualisiert um 09:20 Uhr
Hallo und guten Morgen,

mit dieser Beschreibung kann man zumindest etwas anfangen.

01.
SELECT posten.datum, 
02.
       posten.transanr, 
03.
       CONCAT (posten.bezeichnung,'<br>',  
04.
               CASE WHEN aauftrag.ladung IS NOT NULL  
05.
                    THEN aauftrag.ladung, 
06.
                    ELSE CASE WHEN aauftrag.anzahl IS NULL THEN '' ELSE CONCAT(anzahl,'x&nbsp;') END, 
07.
                         CASE WHEN aauftrag.ldm IS NULL THEN '' ELSE CONCAT(ldm,'ldm&nbsp;') END, 
08.
09.
10.
11.
               END) Text 
12.
 
13.
usw.
G Jörg
Bitte warten ..
Mitglied: nxclass
21.03.2013 um 09:24 Uhr
mh ...
01.
- CONCAT ( posten.bezeichnung,'<br>', aauftrag.ladung, 
02.
+ CONCAT ( posten.bezeichnung,'<br>', 
03.
+ CASE WHEN aauftrag.ladung = '' THEN CONCAT( /* deine neuen DB Felder */ ) ELSE aauftrag.ladung,
müsste doch dann auch gehen ?
Bitte warten ..
Mitglied: Bierkistenschlepper
29.03.2013 um 10:57 Uhr
HTML mit MySQL auszugeben ist extrem unprofessionell. Finger weg.
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MYSQL Abfrage
gelöst Frage von datadexxDatenbanken20 Kommentare

Halo an alle MySQL Spezialisten! Wie kann ich denn am besten folgende Werte abfragen und berechnen? Ausgang für die ...

Datenbanken
MySQL Abfrage für eine Umsatzauswertung kombinieren
gelöst Frage von RedBullmachtfitDatenbanken2 Kommentare

Hallo zusammen, ich möchte Kundenumsätze aus einer MySQL (v5.6, Windows) Datenbank ziehen. Ich komme mit der Struktur jedoch nicht ...

PHP
PHP MySQL Abfrage aus Datenbank
Frage von Lost144PHP12 Kommentare

Hallo, Ich habe in einer Datenbank daten über VM's stehen. Angaben wie hostname,adresse, serverat usw. Wie kann ich in ...

Datenbanken
MySQL Abfrage schlechte Performance
Frage von TorstenEDatenbanken7 Kommentare

Ich mache folgende Abfrage Suche alle Artikel in welchem der "Suchbegriff" im Name des Artikels vorkommt oder in 2 ...

Neue Wissensbeiträge
Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 3 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 8 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement21 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...