cancel
Showing results for 
Search instead for 
Did you mean: 

Query für Teileverwendung in Father und Father-Father

Former Member
0 Kudos

Guten Morgen,

ich benötige Hilfe bei einem Query, wo ich nicht nur die direkte Verbindung zu OITT.Father sondern auch die Überbaugruppen und die darüber liegenden als Ergebnis erhalte.

Beispiel:

Ein Stift = Baugruppe besteht aus Gehäuse und Mine

wenn ich also den Query ausführe:

SELECT

T0.[Father], T1.[Itemname], T0.[Warehouse]

FROM ITT1 T0

inner Join OITM T1 on T0.[Father] = T1.[Itemcode]

WHERE T0.[Code] =['mine']

So erhalte ich den Stift als Ergebnis.

Ist es möglich auch die Überbaugruppen in diesem Query zu erhalten:

z.B. Stifteset, Büroset (wo das Stifteset enthalten ist)...

Ich hoffe, mein Beispiel ist verständlich.

Vielen Dank für Eure Wissenswerte.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hallo Markus,

ich hoffe der Gedankenanstoss hilft. (übernehme aber keine Gewähr für die Richtigkeit

Achtung: Falls du Phantom-Artikel in deinen Stücklisten hast, musst du sie überspringen bis der nächste "richtige" Artikel erkannt wird.

-- Auflösung nach oben

-- aqty benötigte Menge des übergeordneten Teiles

declare @itr nvarchar(20)

set @itr = 'SMB200F0Q00';

WITH SimpleRecursive(father, code, childnum, aqty, bqty, sqty , SubLevel)

    AS

(SELECT a.father, a.code, a.childnum, a.quantity, b.Qauntity, (a.quantity*b.Qauntity/cast(1 as numeric(19,6))), 1   -- Felder müssen typgleich sein

  FROM itt1 a inner join oitt b on a.father = b.code

  WHERE a.code = @itr

UNION ALL

SELECT p.father, p.code, p.childnum, p.Quantity, q.Qauntity, (p.Quantity*q.Qauntity/a.sqty),  SubLevel + 1 

  FROM oitt q  inner join itt1 p on q.code = p.code   INNER JOIN  SimpleRecursive A ON A.father = q.code

)

select * from SimpleRecursive

go

-- Auflösung nach unten

-- sqty benötigte Menge des untergeordneten Teiles

declare @itr nvarchar(20)

set @itr = 'PR000034132';

WITH SimpleRecursive(father, code, childnum, aqty, bqty, sqty , SubLevel)

    AS

(SELECT a.father, a.code, a.childnum, a.quantity, b.Qauntity, (a.quantity*b.Qauntity*cast(1 as numeric(19,6))), 1   -- Felder müssen typgleich sein

  FROM itt1 a inner join oitt b on a.father = b.code

  WHERE b.code = @itr

UNION ALL

SELECT p.father, p.code, p.childnum, p.Quantity, q.Qauntity, (p.Quantity*q.Qauntity*a.sqty),  SubLevel + 1 

  FROM oitt q  inner join itt1 p on q.code = p.father   INNER JOIN  SimpleRecursive A ON A.code = q.code

)

select * from SimpleRecursive

go

Viel Erfolg.