Mam hierarchia z kilkoma nadrzędnymi elementami podrzędnymi, składająca się z ponad 100 tysięcy rekordów. To mały podzbiór.
Dziecko | Rodzic |
---|---|
1 | 2 |
1 | 3 |
2 | 3 |
Muszę zobaczyć każdą wartość z nadrzędnego kolumny i sprawdź czy jest takie samo znaczenie i w podrzędnej kolumnie. Jeśli nie, to utwórz wiersz (wartość NULL). W tym przykładzie wartość 3 nie występuje w podrzędnym kolumnie, więc ja muszę do tworzenia nowego wiersza z wartościami (3, NULL).
Dziecko | Rodzic |
---|---|
3 | zero |
1 | 2 |
1 | 3 |
2 | 3 |
Mój kod nie zwraca błąd, ale to nie sprawia, że to, co chcę.
INSERT IGNORE INTO #table (child, parent)
SELECT (CASE WHEN parent not in (Select child from #table) THEN parent END) as child, Null
FROM #table
Otrzymuję wiele nowych wierszy (NULL,NULL), ale 0 wierszy (wartość NULL). Musi on w jakiś sposób zawsze przejść do klauzuli else, kiedy pojawia się tak wiele nowych wierszy (NULL, NULL), ale nie jestem pewien, dlaczego.
Korzystanie z programu SQL Server Management Studio 17. Będziemy bardzo wdzięczni za każdą pomoc.