Moin zusammen,
ich bin zwar nicht wirklich neu in Sachen SQL aber bisher ging es bei mir nicht wirklich über einfaches SELECT und UPDATE (vielleicht auch ein paar Unterabfragen) hinaus, wenn ich mit Daten arbeiten wollte. Deswegen ist mir mein aktuelles Problem auch recht neu und ich weiss nicht, wie ich herangehen soll.
Das ganze soll später auf einem SQL Server 2005 laufen, TSQL wäre also sinnvoll. Nun aber zu meiner Aufgabe.
Ich habe eine Tabelle, die vereinfacht wie folgt aussieht:
Material Komponente Menge
-----------------------------------------
Material1 Material23 20
Material1 Material22 20
Material1 Material89 60
Material2 Material78 25
Material2 Material23 25
Material2 Material1 40
Material2 Material3 10
Material3 Material22 25
Material3 Material45 25
Material3 Material64 25
Material3 Material14 25
Material4 Material23 40
Material4 Material3 30
Material4 Material2 30
Es handelt sich quasi um eine Rezeptur. Material1 besteht zu 20% aus Material23, zu 20% aus Material22 und zu 60% aus Material89.
Diese Materialien finden sich ebenfalls in der selben Tabelle. Dies sieht man bei Material2. 2 der Inhaltsstoffe finden sich auch in der Tabelle, nämlich die Materialien 1 und 3.
Nun möchte ich eine Abfrage schreiben, die mir die verwendeten Komponenten und deren Menge bis auf die letzte Ebene herunterbricht. Ausgangspunkt der Abfrage soll eine Liste der benutzten Materialien sein.
Ich sage z.B.: Gibt mir alles, was Du zu Material2 findest.
Das sollte dann wie folgt aussehen:
Material Menge
------------------------------
Material78 25
Material23 25
Material23 8
Material22 8
Material89 24
Material22 2,5
Material45 2,5
Material64 2,5
Material14 2,5
Die Inhaltsstoffe und deren Menge wurden also bis auf die 2. Ebene runtergebrochen. Die zweite Ebene muss natürlich nicht die letzte Ebene sein denn diese Materialien können ja ihrerseits wieder aus mehreren Inhaltsstoffen zusammengesetzt sein. Ziel des ganzen ist es, aus einer Liste von Materialen eine Liste der benötigten Materialien der untersten Stufe zu bekommen. Es handelt sich also um eine Art der Rohstoffberechnung.
Ich habe zwar eine grobe Vorstellung, dass ich das ganze mit einer Schleife lösen muss. Allerdings bleibe ich meistens stecken wenns ans Konkrete geht. Ich will ja nicht, dass mir jemand den Code vorbetet aber es wäre schön, wenn ich ein paar Denkansätze bekommen könnte, die sich zum aufbauen eignen.
Danke schonmal für jede Idee. :-)
Gruß
Daniel
ich bin zwar nicht wirklich neu in Sachen SQL aber bisher ging es bei mir nicht wirklich über einfaches SELECT und UPDATE (vielleicht auch ein paar Unterabfragen) hinaus, wenn ich mit Daten arbeiten wollte. Deswegen ist mir mein aktuelles Problem auch recht neu und ich weiss nicht, wie ich herangehen soll.
Das ganze soll später auf einem SQL Server 2005 laufen, TSQL wäre also sinnvoll. Nun aber zu meiner Aufgabe.
Ich habe eine Tabelle, die vereinfacht wie folgt aussieht:
Material Komponente Menge
-----------------------------------------
Material1 Material23 20
Material1 Material22 20
Material1 Material89 60
Material2 Material78 25
Material2 Material23 25
Material2 Material1 40
Material2 Material3 10
Material3 Material22 25
Material3 Material45 25
Material3 Material64 25
Material3 Material14 25
Material4 Material23 40
Material4 Material3 30
Material4 Material2 30
Es handelt sich quasi um eine Rezeptur. Material1 besteht zu 20% aus Material23, zu 20% aus Material22 und zu 60% aus Material89.
Diese Materialien finden sich ebenfalls in der selben Tabelle. Dies sieht man bei Material2. 2 der Inhaltsstoffe finden sich auch in der Tabelle, nämlich die Materialien 1 und 3.
Nun möchte ich eine Abfrage schreiben, die mir die verwendeten Komponenten und deren Menge bis auf die letzte Ebene herunterbricht. Ausgangspunkt der Abfrage soll eine Liste der benutzten Materialien sein.
Ich sage z.B.: Gibt mir alles, was Du zu Material2 findest.
Das sollte dann wie folgt aussehen:
Material Menge
------------------------------
Material78 25
Material23 25
Material23 8
Material22 8
Material89 24
Material22 2,5
Material45 2,5
Material64 2,5
Material14 2,5
Die Inhaltsstoffe und deren Menge wurden also bis auf die 2. Ebene runtergebrochen. Die zweite Ebene muss natürlich nicht die letzte Ebene sein denn diese Materialien können ja ihrerseits wieder aus mehreren Inhaltsstoffen zusammengesetzt sein. Ziel des ganzen ist es, aus einer Liste von Materialen eine Liste der benötigten Materialien der untersten Stufe zu bekommen. Es handelt sich also um eine Art der Rohstoffberechnung.
Ich habe zwar eine grobe Vorstellung, dass ich das ganze mit einer Schleife lösen muss. Allerdings bleibe ich meistens stecken wenns ans Konkrete geht. Ich will ja nicht, dass mir jemand den Code vorbetet aber es wäre schön, wenn ich ein paar Denkansätze bekommen könnte, die sich zum aufbauen eignen.
Danke schonmal für jede Idee. :-)
Gruß
Daniel
Comment