MySQL IF Abfrage
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 203680
Url: https://administrator.de/contentid/203680
Ausgedruckt am: 15.11.2024 um 23:11 Uhr
10 Kommentare
Neuester Kommentar
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
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
... 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
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
SELECT
IF(`xzy` IS NULL OR `xzy` = '', CONCAT( `abz`, `dfg` ), NULL ) AS 'myresult'
...
/* entweder: */
WHERE
(`xzy` IS NULL OR `xzy` = '')
/* oder: */
...
HAVING
`myresult` IS NOT NULL
Weiterhin würde ich dir empfehlen mit einem UPDATE die Daten auf einen einheitlichen Stand zu bringen.
Hallo und guten Morgen,
mit dieser Beschreibung kann man zumindest etwas anfangen.
G Jörg
mit dieser Beschreibung kann man zumindest etwas anfangen.
SELECT posten.datum,
posten.transanr,
CONCAT (posten.bezeichnung,'<br>',
CASE WHEN aauftrag.ladung IS NOT NULL
THEN aauftrag.ladung,
ELSE CASE WHEN aauftrag.anzahl IS NULL THEN '' ELSE CONCAT(anzahl,'x ') END,
CASE WHEN aauftrag.ldm IS NULL THEN '' ELSE CONCAT(ldm,'ldm ') END,
.
.
.
END) Text
usw.
G Jörg