Hallo zusammen,
ich habe da ein kleines Problem:
Ich möchte aus 2 Tabellen nur die Datensätze anzeigen lassen, welche die gleiche Artikelnummer haben.
Das war nun erstmal das Grundlegende.
Falls sich jemand die Mühe machen möchte, sich in die Problematik reinzudenken, hier die genaue Beschreibung der Funktion:
Es dreht sich um drei Tabellen: STUELI (Stücklisten), Fertigungstage (Fertigungsplanung: Wann wird was in welcher Menge produziert), ARTIKEL (Artikelstammdaten)
Was in ARTIKEL und Fertigungstage vom Prinzip her festgehalten wird, dürfte allgemein verständlich sein.
Die Stücklisten sind sozusagen die Bauanleitungen der Fertigprodukte.
D.h.:
Die Stückliste 0815 (also auch für Verkaufsartikel 0815) beinhaltet den Fertigungsartikel 1815 und die einzelnen Verpackungsbestandteile (also Einkaufsartikel, z.B. 7845 Folie, 7855 Umkarton, usw, welche nicht bei uns hergestellt werden, also auch keine Stückliste haben)
Die Stückliste des Fertigungsartikels 1815 beinhaltet wieder andere Fertigungsartikel (welche wieder eigene Stücklisten haben) und andere Einkaufsartikel....usw
Die bestehende Funktion schreibt alle Planungen eines bestimmten Zeitraums in eine neue Tabelle.
Im nächsten Schritt werden in einer Schleife die einzelnen Einträge der neuen Tabelle durchgesehen, wobei die Artikelnummern mit den Stücklistennummern verglichen werden. Gibt es eine entsprechende Stückliste, so wird der Inhalt an die neue Tabelle angehangen. So wird gewährleistet, daß die Stücklisten komplett runtergebrochen dargestellt werden.
Diese Funktion muß nun dahingehend erweitert werden, daß Artikel, die in den Artikelstammdaten als Fertigungsartikel (ARTIKEL.FERTIGUNG = 1) und Lagerbezogen (ARTIKEL.DISPO_LAGER) gekennzeichnet sind, nicht mit aufgeführt werden. Wenn diese Artikel allerdings in der Planung vorkommen, so sollen sie doch aufgeführt werden (ARTIKEL.ARTIKEL = Fertigungstage.Produkt_Nr).
Hier der Quelltext der bestehenden Funktion:
Benutzt wird MS SQL-Server 2000.
Ich hoffe, daß ich mein Problem einigermaßen klar darstellen konnte und hoffe auf schnelle Hilfe.
Gruß
Olli
ich habe da ein kleines Problem:
Ich möchte aus 2 Tabellen nur die Datensätze anzeigen lassen, welche die gleiche Artikelnummer haben.
Das war nun erstmal das Grundlegende.
Falls sich jemand die Mühe machen möchte, sich in die Problematik reinzudenken, hier die genaue Beschreibung der Funktion:
Es dreht sich um drei Tabellen: STUELI (Stücklisten), Fertigungstage (Fertigungsplanung: Wann wird was in welcher Menge produziert), ARTIKEL (Artikelstammdaten)
Was in ARTIKEL und Fertigungstage vom Prinzip her festgehalten wird, dürfte allgemein verständlich sein.
Die Stücklisten sind sozusagen die Bauanleitungen der Fertigprodukte.
D.h.:
Die Stückliste 0815 (also auch für Verkaufsartikel 0815) beinhaltet den Fertigungsartikel 1815 und die einzelnen Verpackungsbestandteile (also Einkaufsartikel, z.B. 7845 Folie, 7855 Umkarton, usw, welche nicht bei uns hergestellt werden, also auch keine Stückliste haben)
Die Stückliste des Fertigungsartikels 1815 beinhaltet wieder andere Fertigungsartikel (welche wieder eigene Stücklisten haben) und andere Einkaufsartikel....usw
Die bestehende Funktion schreibt alle Planungen eines bestimmten Zeitraums in eine neue Tabelle.
Im nächsten Schritt werden in einer Schleife die einzelnen Einträge der neuen Tabelle durchgesehen, wobei die Artikelnummern mit den Stücklistennummern verglichen werden. Gibt es eine entsprechende Stückliste, so wird der Inhalt an die neue Tabelle angehangen. So wird gewährleistet, daß die Stücklisten komplett runtergebrochen dargestellt werden.
Diese Funktion muß nun dahingehend erweitert werden, daß Artikel, die in den Artikelstammdaten als Fertigungsartikel (ARTIKEL.FERTIGUNG = 1) und Lagerbezogen (ARTIKEL.DISPO_LAGER) gekennzeichnet sind, nicht mit aufgeführt werden. Wenn diese Artikel allerdings in der Planung vorkommen, so sollen sie doch aufgeführt werden (ARTIKEL.ARTIKEL = Fertigungstage.Produkt_Nr).
Hier der Quelltext der bestehenden Funktion:
Code:
CREATE FUNCTION dbo.rohstoffbedarf_auswahl_datum --/// "Aufloesen" mehrerer Stammstuecklistenstrukturen nach Auswahl --/// Rueckgabewert ist eine Tabelle -- /// PATH erlaubt eine strukturgerechte Sortierung ( @DATUM_VON AS datetime,@DATUM_BIS AS datetime ) RETURNS @tree table ( LINIE char(10), F_MENGE decimal(18,2), DRUCKEN int, PRODUKTIONSTAG datetime, ARTIKEL char(22) collate Latin1_General_CI_AS NOT NULL, STUELI char(22) collate Latin1_General_CI_AS NOT NULL, POSITION int NOT NULL, lvl int NOT NULL, id int not null, path varchar(1000) collate Latin1_General_CI_AS NOT NULL, mengestrukt decimal (18,2) ) AS BEGIN DECLARE @lvl AS int, @path AS varchar(1000) SELECT @lvl = 1, @path = '.' INSERT INTO @tree SELECT Fertigungstage.Linie, Fertigungstage.F_Menge, Fertigungstage.DRUCKEN, Fertigungstage.PRODUKTIONSTAG, isnull(STUELIPOS.ARTIKEL, ' ') , STUELIPOS.STUELI , STUELIPOS.POSITION, @lvl , STUELIPOS.id,'.' + REPLICATE('0', 10-DATALENGTH(RTRIM(CAST(STUELIPOS.POSITION AS varchar(10))))) + RTRIM(CAST(STUELIPOS.POSITION AS varchar(10)))+ '.', MENGE --FROM Fertigungstage JOIN STUELIPOS ON Fertigungstage.Produkt_Nr=STUELIPOS.ARTIKEL FROM Fertigungstage JOIN STUELIPOS ON Fertigungstage.Produkt_Nr=STUELIPOS.STUELI --/// WHERE STUELI = @ROOT WHERE Fertigungstage.Produktionstag >= @DATUM_VON AND Fertigungstage.Produktionstag <= @DATUM_BIS ORDER BY POSITION WHILE @@ROWCOUNT > 0 BEGIN SET @lvl = @lvl + 1 INSERT INTO @tree SELECT T.LINIE, T.F_Menge, T.DRUCKEN, T.PRODUKTIONSTAG, isnull(E.ARTIKEL, ' '), E.STUELI, E.POSITION, @lvl, E.id,T.path + REPLICATE('0', 10-DATALENGTH(RTRIM(CAST(E.POSITION AS varchar(10))))) + RTRIM(CAST(E.POSITION AS varchar(10)))+ '.',(E.MENGE / E.MENGEPMNG) * T.MENGESTRUKT FROM STUELIPOS AS E JOIN @tree AS T ON E.STUELI = T.ARTIKEL AND T.lvl = @lvl - 1 ORDER BY E.POSITION END RETURN END
Ich hoffe, daß ich mein Problem einigermaßen klar darstellen konnte und hoffe auf schnelle Hilfe.
Gruß
Olli
Comment