SQL wenn wert ist nicht vorhanden.
spicy05
- php
Hallo,
ich bräuchte bitte Hilfe.
Name1,Name2, Name3, Straße, Land, Plz und Ort sollten nur aus der Tabelle Adressen_lief entnommen werden wenn der Wert der Spalte ADDR_ID in beiden Tabellen vorhanden ist.
Ansonsten sollten Sie aus der Tabelle Journal entnommen werden.
Armin
select
'04102013' AS DATUM,
SHOP_ORDERID AS REF,
'' AS HV,
case JOURNAL.ZAHLART
when 4 then JOURNAL.BSUMME
END AS NN,
'' AS GEWICHT,
Case ADRESSEN_LIEF.ADDR_ID
when > NULL then
ADRESSEN_LIEF.NAME1 AS NAME1,
ADRESSEN_LIEF.NAME2 AS NAME2,
ADRESSEN_LIEF.NAME3 AS NAME3,
ADRESSEN_LIEF.STRASSE AS STRASSE,
ADRESSEN_LIEF.LAND AS LAND,
ADRESSEN_LIEF.PLZ AS PLZ,
ADRESSEN_LIEF.ORT AS ORT,
END
'E' AS AVISO
from JOURNAL LEFT JOIN ADRESSEN_LIEF USING (ADDR_ID)
/*from JOURNAL LEFT JOIN ADRESSEN USING (JOURNAL.KUN_NUM) = (ADRESSEN.KUNNUM1) */
where RDATUM >= '2013.01.03' and QUELLE ='3'
Tach!
Name1,Name2, Name3, Straße, Land, Plz und Ort sollten nur aus der Tabelle Adressen_lief entnommen werden wenn der Wert der Spalte ADDR_ID in beiden Tabellen vorhanden ist.
Ansonsten sollten Sie aus der Tabelle Journal entnommen werden.
Ich würde das mit zwei Abfragen (verbunden mit UNION) lösen, einmal mit der einen Bedingung, und dann nochmal mit der anderen.
case JOURNAL.ZAHLART
when 4 then JOURNAL.BSUMME
END AS NN,
Es gibt IF(), das ist weniger umständlich zu notieren
Case ADRESSEN_LIEF.ADDR_ID
when > NULL then
Wann immer NULL in einem Ausdruck auftaucht, ist das Ergebnis NULL. Im booleschen Kontext wird das immer als false gewertet. Egal ob du nun > oder < oder = oder <> beziehungsweise != verwendest, die Bedingung ist nie erfüllt. Für Vergleiche mit NULL gibt es spezielle Operatoren, wie IS NULL oder NOT IS NULL.
ADRESSEN_LIEF.NAME1 AS NAME1,
ADRESSEN_LIEF.NAME2 AS NAME2,
ADRESSEN_LIEF.NAME3 AS NAME3,
ADRESSEN_LIEF.STRASSE AS STRASSE,
ADRESSEN_LIEF.LAND AS LAND,
ADRESSEN_LIEF.PLZ AS PLZ,
ADRESSEN_LIEF.ORT AS ORT,
END
Ein CASE kann immer nur einen Wert liefern, keine Armada aus Feldern. Wenn du das so machen wllst, musst du für jedes Feld einzeln etwas schreiben. Wenn du das so machen willst, schau dir dazu die Funktionen IFNULL() und COALESCE() an.
dedlfix.