SELF-JOIN



  • Hallo !

    ich möchte gerne eine Tabelle mit sich selbst joinen:

    Bei uns werden für jedes Lager jeden Tag Messwerte geschrieben. Die Tabelle sieht dann ca. so aus:

    Monat      Tag      Lager      Wert    Arbeitstage
    200609    010906      A         5          1
    200609    010906      B         4          1
    200609    010906      C         2          1
    
    200609    070906      A         12         7
    200609    070906      B         7          7
    200609    070906      C         9          7
    
    200609    120906      A         18        12
    200609    120906      B         8         12
    200609    120906      C         9         12
    
    200609    190906      A         22        19
    200609    190906      B         14        19
    200609    190906      C         16        19
    

    Ähnliche Einträge gibt es natürlich auch für die Vormonate.

    Ich brauche jetzt eine Tabelle die mir für jeden Lager im aktuellen Monat den summierten und den niedrigsten Anfangsstand anzeigt.

    Mein Code bisher:

    SELECT tab1.Lager,tab1.Wert,tab1.monat, tab2.Wert FROM ......
    WHERE tab1.monat = (select max(monat) from tab1)
    ORDER BY Lager, Monat
    

    Und hier muss ich irgendeine Verknüpfung mit der Tabelle selbst einbauen damit ich dann sagen kann tab2.arbeitstage = '1'.

    Kann mir da jemand einen Tip geben ??

    Danke
    Gawan



  • Was mir auffällt:

    ich möchte gerne eine Tabelle mit sich selbst joinen

    ➡ Darfst du, ist, aber überflüssig.

    ➡ Guck mal nach der "GROUP BY"-Klausel.

    ➡ Guck mal nach den Aggregatfunktionen "SUM" und "MIN".

    ➡ Wozu nach Monat sortieren, wenn du eh danach filterst?



  • Natürlich gibts ein Self-Join und natürlich kann der Sinn machen. Hab das Beispiel nicht angeschaut, gehen tut das wie jeder andere join auch:

    SELECT ... FROM table INNER JOIN table as joined_table ON joined_table.x = table.y;


Anmelden zum Antworten