@ukuleleCode:WITH t(ebene,pfad,Objekt_ID,objektTyp,menge) AS ( SELECT 1, cast(Objekt_ID AS VARCHAR(8000)), Objekt_ID, objektTyp, NULL FROM tblObjekt WHERE Objekt_ID = 234565 UNION ALL SELECT t.ebene + 1, t.pfad + '.' + cast(c.Objekt_ID AS VARCHAR(8000)), c.Objekt_ID, c.objektTyp, z.menge FROM t INNER JOIN tblZuordnung z ON t.Objekt_ID = z.Mother_ID INNER JOIN tblObjekt c ON z.Child_ID = c.Objekt_ID WHERE t.ebene + 1 <= 100 ) -- Hier wird die Gesamtsumme über preis_berechnet berechnet SELECT *, t.menge * tblDetaildaten.preis AS position_preis --SUM(t.menge * tblDetaildaten.preis) as gesamter_preis_berechnet FROM t LEFT JOIN tblDetaildaten ON t.Objekt_ID = tblDetaildaten.Objekt_ID;
Deine DB weiß sehr wohl das es 2 Türen im Golf gibt, ich habe deine Testdaten 1:1 übernommen. Die Menge fließt auch korekt in die Berechnung ein. Deine DB weiß allerdings nicht, was eine Tür von einem Golf und die Innenverkleidung kosten.
Danke für deine Nachricht, aber wenn du dir den VW Golf im Beispiel anschaust gehören zu Ihm 2 Türen (oberste Baugruppe) diese setzt sich aber durch die zwei Türen aus nur noch zwei Innenverkleidungen. 2 Türgriffen.1 Lautsprecher, 2 Dämmungen und 5 Schrauben zusammen. Nicht wie der Skoda Oktavia aus 4 Türen und deren Mengen.
ebene pfad Objekt_ID objektTyp menge Objekt_ID bezeichnung preis position_preis
1 234565 234565 1 NULL 234565 VW Golf NULL NULL
2 234565.489282 489282 2 2 489282 Tür NULL NULL
3 234565.489282.673673 673673 2 [B] 4[/B] 673673 Inneverkleidung NULL NULL
3 234565.489282.939039 939039 3 [B]4[/B] 939039 Türgriff 2500 10000
3 234565.489282.672674 672674 3 [B]2 [/B] 672674 Lautsprecher 2500 5000
4 234565.489282.673673.363737 363737 3 [B]4 [/B] 363737 Dämmung 2250 9000
4 234565.489282.673673.373873 373873 3 [B]10 [/B] 373873 Schraube 100 1000
Die markierte Menge ist ja für den Skoda Oktavia.... und nicht den Golf. Wie würdest du die Umrechnung machen bzw. dort fehlt einfach der Zusammenhang zwischen Auto, Menge der Einzelteile....