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

    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.973
    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'
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

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

    hat geklappt.
    kf

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Jan 2007
    Beiträge
    904
    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
    20.207
    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: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •