Originally Posted by
cpri
Aangezien ik nu via de join alle inputs 2 keer moet ingeven (identifier en het liefst ook het max niveau) is er een kans dat de childs op een andere identifier gezocht worden dan de parents.
Uiteraard kan je dit oplossen door bijv de identifier regel aan te passen met een parameter
[...]
Echter ik wil dit zelf in mijn sql stetament op kunnen geven zonder dat de gebruiker hier naar gevraagd wordt.
Kan ik nu ergens in het sql statement zelf een waarde toekennen aan aIdentifier
Nog even hierop terugkomend.
Je kunt ook zoiets doen. Je roept in de basis RECURSIVE in de eerste SELECT alle ParentID=0 maar geeft dan ook gelijk ID en IDENTIFIER mee in de SELECT.
In de subSELECT voor CHILDS pak je diezelfde BASE ID en BASE IDENTIFIER.
Je krijgt dan ALLE rows maar je krijgt twee extra kolommen met de ultimate parent.
SQL Code:
WITH RECURSIVE Childs AS
(
SELECT ID, ParentID,Identifier,TekNR,DATUM,RegNr, 1 AS Niveau, ID AS BASE, IDENTIFIER AS BASE_IDENTIFIER
FROM TEST
WHERE ParentID = 0
UNION ALL
SELECT ID, ParentID,Identifier,TekNR,DATUM,RegNr, Niveau+1 AS Niveau, BASE, BASE_IDENTIFIER
FROM Childs
INNER JOIN TEST R ON R.PARENTID=Childs.ID
WHERE Niveau<10
)
SELECT * FROM Childs
Result:
Code:
1 0 12345 171M100 00 10.10.2023 4266 1 1 12345
3 1 ABC-123 171M005 00 10.10.2023 4266 2 1 12345
6 3 plk_001 171M117 00 10.10.2023 4266 3 1 12345
8 3 lot-1234 020R200 01 10.10.2023 4266 3 1 12345
7 1 sht-003 171M144 00 10.10.2023 4266 2 1 12345
2 0 12346 171M200 00 10.10.2023 4266 1 2 12346
4 2 ABC-124 171M005 00 10.10.2023 4266 2 2 12346
9 4 lot-1234 020R200 01 10.10.2023 4266 3 2 12346
5 0 12347 171M200 00 10.10.2023 4266 1 5 12347
Uiteraard kun je hier helemaal onder een WHERE opnemen van welke subchild of welke parent je wilt hebben.
Bookmarks