[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    620

    SQL left join und where clause

    Hi Forum,

    ich brauch ein bisschen Hilfe in einer SQL-Frage.

    Folgende Problemstellung:
    Ich habe eine Reihe Identaufträge gehalten von einer Sammelnummer.
    Dazu habe ich über eine Verknüpfung abhängige Unteraufträge.

    Ueber den left join schaffe ich es (analog DDS und JDFTVAL) den Identauftrag ohne Unterauftrag anzuzeigen. Soweit so gut. Das Problem fängt dann an, wenn es einen Unterauftrag gibt, dieser aber ein Löschkennzeichen hat. Ueber die where Klausel kann ich den Unterauftrag so nicht ausschliessen, weil dann auch der Identauftrag rausfliegt.

    Was ich haben möchte, ist, dass ein gelöschter Unterauftrag gleich wie ein nicht Existierender behandelt wird.

    Ich hoffe, ich habe mich klar genug ausgedrückt.

    Anbei meine SQL-Statements:
    select i.iauftrag, l.uauftrag from identorder as i
    left outer join linkorder as l
    on i.iauftrag = l.uauftrag
    where i.sammelnummer = 1 and i.istatus = 'ok' and l.ustatus = 'ok'
    order by i.iauftrag, l.uauftrag;
    kf

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.715
    Moin,
    nein, ich habe es nicht verstanden

    Aber
    Was ich haben möchte, ist, dass ein gelöschter Unterauftrag gleich wie ein nicht Existierender behandelt wird.
    Warum nicht

    where irgendein_feld_aus_unterauftragsdatei is null (--> nicht existent)
    or löschkennzeichen_in_unterauftrag ='gelöscht'
    Interessante Umfrage zur Nutzung der AS/400

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    620
    Merci Robi,

    hat geklappt.
    kf

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    18.589
    Du kannst diese Bedingungen auch in der ON-Klausel verwenden. Dies ist ebenso eine Where-Klausel und somit kann ich mir die NULL-Abfrage im Gesamt-Where sparen.

    left join Tab2 on Key = Key and Status <> 'D'
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Jan 2007
    Beiträge
    620
    Hallo Baldur,
    Grundsätzlich einverstanden, nur brauch ich die Nullabfrage, wenn gar kein Verknüpfungs-Satz vorhanden ist. (Uebringens inkl. der Fehlerbehandlung des SQL0305 mit dem Nullindikator). Ist halt schon noch ein Unterschied, wenn man die SQL-Abfrage im ACS oder im RPG ausführt. ;-)
    kf

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    18.589
    Die NULL-Abfrage benötigt man nur, wenn man in der Where-Klausel auf Felder des Joins prüft, da sonst automatisch ein Inner-Join draus wird.
    Deine Bedingung war ja, Leftjoin-Sätze auszuschließen wenn eine bestimmte Bedingung vorliegt und das kann man in der ON-Klausel ohne NULL-Abfrage machen.

    Andere Programmiersprachen kennen i.d.R. keine NULL-Flag sondern die Variable ist meist vom Typ NULLABLE. So kann man "if (Var = NULL)" prüfen.
    ILERPG kennt NULL nur bei Pointern.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

Ähnliche Themen

  1. with und left outher join
    Von ILEMax im Forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 10-11-17, 16:21
  2. SQL mit Left outer join
    Von Miles im Forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 26-10-16, 14:40
  3. sql left outer join
    Von dibe im Forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 20-01-16, 10:30
  4. Left join Verständnis Frage
    Von KingofKning im Forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 17-11-14, 14:52
  5. LEFT OUTER JOIN
    Von GS im Forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 21-11-02, 08:51

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •