Announcement

Collapse
No announcement yet.

Left outer join

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Left outer join

    Hallo allerseits

    Ich habe einer Abfrage zusammen gebastelt mit 2 unterschiedliche Methoden
    und bekomme jeweils unterschiedliche Ergebnisse.

    In der 2 Methode benutze ich Left Outer Join, in das ERgebniss bekomme ich die richtige anzahl alle Rohdaten zurück jedoch gibt es sehr viele Null-werte

    Die Idee ist zu zählen alle Rohdaten und die noch einreichern mit Informationen aus andere verschiedene Tabellen:

    1-Methode
    Code:
    select  
            c.ILN_KUNDE,
            b.ILN as ILN_MARKT,     
            max(a.SYSCDAT) as Monat,
            d.DPG_MATERIALART,
            d.DPG_VERPACKUNGSGEWICHT,
            count(a.ID) as ANZAHL_ROHDATENSATZ,
    		a.ID
    
            from ROHDATENSATZ a,
    		     TALON b,
                 MARKT c,
                 ARTIKEL_DETAIL d
    
            where a.ID = b.ID
                  AND b.ILN = c.ILN
                  AND a.ARTIKELNUMMER_EAN = d.ARTIKELNUMMER_EAN
                  AND (d.GUELTIG_AB <= a.DATUM AND a.DATUM <= d.GUELTIG_BIS)
    
    	    GROUP BY a.ID, b.ILN, c.ILN_KUNDE, d.MATERIALART, d.VERPACKUNGSGEWICHT
    2-Methode
    Code:
    select  
            c.ILN_KUNDE,
            b.ILN as ILN_MARKT,     
            max(a.SYSCDAT) as Monat,
            d.MATERIALART,
            d.VERPACKUNGSGEWICHT,
            count(a.ID) as ANZAHL_ROHDATENSATZ,
    		a.ID
    
            from ROHDATENSATZ a LEFT OUTER JOIN ARTIKEL_DETAIL d ON (a.ARTIKELNUMMER_EAN = d.ARTIKELNUMMER_EAN
                                                                AND (d.GUELTIG_AB <= a.DATUM AND a.DATUM <= d.GUELTIG_BIS))
                                            LEFT OUTER JOIN  TALON b ON ( a.ID = b.ID),
                 MARKT c
            
            where b.ILN = c.ILN
    
    
    	    GROUP BY a.ID, b.ILN, c.ILN_KUNDE, d.MATERIALART, d.VERPACKUNGSGEWICHT, a.SYSCDAT
    Wie kann ich überprüfen welche Ergbniss das Richtige ist?
    Danke für eure Hilfe im Vorraus

  • #2
    Hallo foufou,
    Originally posted by foufou View Post
    Ich habe einer Abfrage zusammen gebastelt mit 2 unterschiedliche Methoden
    und bekomme jeweils unterschiedliche Ergebnisse.
    Natürlich bekommst du zwei unterschiedliche Ergebnisse, du JOINst ja auch auf zwei verschiedene Weisen.

    Originally posted by foufou View Post
    Wie kann ich überprüfen welche Ergbniss das Richtige ist?
    ...
    In der 2 Methode benutze ich Left Outer Join, in das ERgebniss bekomme ich die richtige anzahl alle Rohdaten zurück jedoch gibt es sehr viele Null-werte
    Ist das zweite Ergbnis nun korrekt oder weißt du nicht ob es richtig ist???

    Außerdem:
    1. eine WHERE-Bedingung ist keine JOIN-Bedingung. Also "... JOIN Tabellenname [AS Aliasname] ON ..." für JOIN-Bedingungen verwenden.
    2. Aliasnamen sollten weitgehend sprechend sein. Das hilft dir auch selbst wieder wenn du den Code in einem halben Jahr wieder ausbuddelst.
    3. eine genaue und konkrete Problembeschreibung würde vielleicht weiterhelfen.


    Also bitte das Problem und vor allem das Ziel etwas besser beschreiben. Ein grober Überblick über die Tabellenstruktur ist auch immer sehr hilfreich.

    lg chapster

    Comment

    Working...
    X