1 Reply Latest reply: Apr 11, 2012 3:02 PM by Stephan Poller RSS

Query für Teileverwendung in Father und Father-Father

Markus Schaefer
Currently Being Moderated

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.

  • Re: Query für Teileverwendung in Father und Father-Father
    Stephan Poller
    Currently Being Moderated

    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.