Grüezi allerseits, ich habe ein Problem beim Insert in eine Tabelle. Die Tabelle x, die ich befüllen will, hat folgende Spalten: ID, Name, Pfad. ID=INT, Name=NVARCHAR(50), Pfad=NVARCHAR(100). Die Einträge in der Spalte Pfad sehen so aus: |Archiv|allgemeines Archiv|Technik|
Die Daten, die ich einfüllen möchte, kommen aus einer Hilfstabelle, die nur zwei Spalten hat: "Name" und "Teilpfad". In "Teilpfad" sind Begriffe abgespeichert, die einen Teil des Pfades bilden, der in der Haupttabelle vorhanden
ist. Beispielsweise "Technik" (ohne Pipe) oder "Kunst" etc.. In der Haupttabelle wären die entsprechenden Pfadwerte dann: |Archiv|allgemeines Archiv|Technik| bzw. |Archiv|allgemeines Archiv|Kunst|.
Wenn ich nun ein Insert mache, so möchte ich das so machen:
INSERT INTO Tabelle x
(SELECT NewID(),
Name,
(SELECT Pfad FROM Tabelle x WHERE Pfad LIKE '|%'+Hilfstabelle.Teilpfad+'|'),
FROM Hilfstabelle
)
Das funktioniert aber nicht.
Wenn ich statt "LIKE '|%'+Hilfstabelle.Teilpfad+'|'" im Subselect "LIKE '|%'+'Technik'" schreibe, dann klappt alles wunderbar. Ich möchte im Subselect aber keinen festen Wert wie "Technik" eintragen. Sonst müsste ich für jeden Teilpfad ein eigenes Statement schreiben. Kann man dieses Subselect nicht generisch schreiben?