Gibt es eine Möglichkeit, zwei hierarchische Tabellen in SQL Server beizutreten/zusammenführen?SQL Join/Merge zwei hierarchyid Tabellen
Ich habe zwei Beispieltabellen: BOM
und ComponentDetail
declare @BOM table
(
BomNode hierarchyid primary key,
ComponentID int
)
insert into @BOM
values
('/', NULL),
('/1/', 1),
('/1/1/', 2),
('/1/2/', 3),
('/1/3/', 4)
declare @ComponentDetail table
(
CompNode hierarchyid primary key,
ComponentID int,
SteelProductID int
)
insert into @ComponentDetail
values
('/', NULL,NULL),
('/1/', 2, NULL),
('/1/1/', 2,1),
('/1/2/', 2,2)
Was ich tun möchte, ist vorübergehend die beiden Tabellen zu kombinieren, nur das Ergebnis in meiner Anwendung zu lesen:
UPDATE: @Sean Lange ich habe einen Fehler in erklärt Ergebnistabelle gemacht - es wie unten aussehen:
insert into @Result
values
('/', NULL, NULL),
('/1/', 1, NULL),
('/1/1/', 2, NULL),
('/1/1/1/', NULL, 1),
('/1/1/2/', NULL, 2),
('/1/2/', 3, NULL),
('/1/3/', 4, NULL)
select
Node.ToString() as NodeChar, ComponentID, SteelProductID
from @Result
Hier ist ein Diagramm von desi rote Ausgabe: Output diagram
Jeder?
Es ist viel einfacher, wenn Sie nicht einzelne Datensatz-ID-Werte als „Schrägstrich begrenzt“() Werte in einer Spalte zu speichern sind?. Sie können ein rekursives CTE verwenden, um alle Ebenen der Stückliste zusammenzufassen. Es sieht so aus, als müssten Sie zuerst Ihre Daten analysieren und normalisieren und dann eine andere Abfrage verwenden, um die benötigten Daten zurückzugeben. –
@JacobH, die keine Daten mit Trennzeichen sind, verwendet das OP den hierarchyid-Datentyp. https://docs.microsoft.com/en-us/sql/t-sql/data-types/hierarchyid-data-type-method-reference –
Ah das ist ordentlich. Niemals einen Hierarchie-ID-Typ verwendet. Lerne jeden Tag etwas Neues. –