Schleifen in SQL-Abfrage?
Hallo,
ich habe 3 Tabellen:
Tabelle 1: Artikelnummer, Menge, VorgangID Für den Beleg
Tabelle 2: Stueckliste, Element, Menge, Sortierung hier werden die Untermaterialien aufgelistet - Stueckliste = Artikelnummer und Element = Artikelnummer in der Stueckliste
Tabelle 3: Artikelnummer, ISTStückliste // wenn ISTStueckliste = -1 dann ist es eine Stueckliste und es gibt in Tabelle 2 den Eintrag mit Artikelnummer=Element
Jetzt ist es so, dass ein Artikel eine Stueckliste sein kann
Vorgang 0815 hat 3 Positionen, also 3 Artikelnummern
Position 1: Artikel A besteht also aus 2x UnterArtikel UA1 und 3x UnterArtikel UA2
Position 2: Artikel B besteht aus 1x UB1 und 1x UA2 und 1x UB2
UB2 besteht allerdings seinerseits auch aus einer Stückliste und setzt sich aus 2x UUA1 und 2x UUA2 zusammen
Position 3: 5x Artikel Z (keine Stückliste, also ISTStueckliste = 0)
In Summe würden als benötigt werden: 2x UA1, 4x UA2, 1x UB1, 2x UUA1 und 2x UUA2 sowie 5x Z
Diese Summen würde ich gerne irgendwie "einfach" ermitteln können. Ich hab da zwar Ansätze aber die sind irgendwie aufwendig und schwer verständlich.
Wie fragt man sowas ab, da die Verschachtelung x-beliebig tief sein könnte
Ist das verständlich nieder geschrieben?
ich habe 3 Tabellen:
Tabelle 1: Artikelnummer, Menge, VorgangID Für den Beleg
Tabelle 2: Stueckliste, Element, Menge, Sortierung hier werden die Untermaterialien aufgelistet - Stueckliste = Artikelnummer und Element = Artikelnummer in der Stueckliste
Tabelle 3: Artikelnummer, ISTStückliste // wenn ISTStueckliste = -1 dann ist es eine Stueckliste und es gibt in Tabelle 2 den Eintrag mit Artikelnummer=Element
Jetzt ist es so, dass ein Artikel eine Stueckliste sein kann
Vorgang 0815 hat 3 Positionen, also 3 Artikelnummern
Position 1: Artikel A besteht also aus 2x UnterArtikel UA1 und 3x UnterArtikel UA2
Position 2: Artikel B besteht aus 1x UB1 und 1x UA2 und 1x UB2
UB2 besteht allerdings seinerseits auch aus einer Stückliste und setzt sich aus 2x UUA1 und 2x UUA2 zusammen
Position 3: 5x Artikel Z (keine Stückliste, also ISTStueckliste = 0)
In Summe würden als benötigt werden: 2x UA1, 4x UA2, 1x UB1, 2x UUA1 und 2x UUA2 sowie 5x Z
Diese Summen würde ich gerne irgendwie "einfach" ermitteln können. Ich hab da zwar Ansätze aber die sind irgendwie aufwendig und schwer verständlich.
Wie fragt man sowas ab, da die Verschachtelung x-beliebig tief sein könnte
Ist das verständlich nieder geschrieben?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 387798
Url: https://administrator.de/contentid/387798
Ausgedruckt am: 25.11.2024 um 10:11 Uhr
2 Kommentare
Neuester Kommentar
Das geht eigentlich sehr gut in SQL und bedarf keiner Schleife. Dein Stichwort heißt common table expression und sieht erstmal unspektakulär aus, ist aber für rekurisve Abfragen das Mittel der Wahl.
https://docs.microsoft.com/de-de/sql/t-sql/queries/with-common-table-exp ...
Leider kann natürlich die, warum auch immer, sehr belibte DB MySQL das nicht bzw. erst seit Kurzem, um welches DBMS (Version?) geht es?
https://docs.microsoft.com/de-de/sql/t-sql/queries/with-common-table-exp ...
Leider kann natürlich die, warum auch immer, sehr belibte DB MySQL das nicht bzw. erst seit Kurzem, um welches DBMS (Version?) geht es?