Ich bin etwas neu in SQL und ich versuche herauszufinden, die beste Möglichkeit, dies ohne Hardcoding Update-Anweisungen in SQL Server 2012 zu tun.
Grundsätzlich habe ich eine hierarchische Tabelle von Unternehmen (denken Sie an eine Lieferkette) mit Spalten ( CompanyID, ParentID, ParentPriceAdj, CompanyPriceAdj
). Jedem Unternehmen wird eine Preisanpassung von seinem Elternteil zugewiesen, die einen Listenpreis in der Tabelle PartMaster
ändert, und der Endpreis wird durch Kaskadieren der Anpassungen von Eltern zu Kind berechnet.
Wenn eine Preisanpassung für Eltern aktualisiert wird, möchte ich, dass dies auf alle seine untergeordneten Unternehmen und so weiter reflektiert wird
aka:
Wenn ich eine CompanyPriceAdj
für eine gegebene updatedcompanyID
aktualisiere, möchte ich rekursiv die untergeordneten CompanyID
's ( ParentId = updatedCompanyID
) finden und ihre ParentPriceAdj
auf ParentCompany
aktualisieren ( parentPriceAdj * (1 + CompanyPriceAdj)
)
Ich dachte daran, eine gespeicherte Prozedur zu verwenden, die sich dann wiederholt für jedes Kind aktualisiert, das gerade aktualisiert wurde und anschließend seine Kinder aktualisiert .... bis die Firma keine Kinder mehr hat
Ich habe versucht, mich umzusehen, konnte keine Beispiele wie diese finden
Das habe ich gerade jetzt
%Vor%Haben Sie sich einen CURSOR angesehen? Es ist ein bisschen Overhead, aber es kann Ihnen geben, was Sie brauchen. Wenn Sie nicht vertraut sind, ist unten eine grundlegende Gliederung. Sie können jede Firmen-ID einzeln erfassen, Änderungen vornehmen und weitermachen. Sie können sie verschachteln, sie in Schleifen einbinden oder Schleifen darin einfügen, was auch immer Sie brauchen, um durch eine Liste zu gehen, die Aktionen ausführt, bis keine Aktionen mehr übrig sind, die Aufmerksamkeit benötigen.
%Vor%Ich hoffe, das ist hilfreich. Ich entschuldige mich, wenn ich falsch verstanden habe.
Tags und Links sql sql-server recursion sql-server-2012 sql-update