Wyciągam dane pracowników z bazy danych programu SQL Server w celu narysowania wykresu organizacyjnego. Moja firma ma wiele działów (jak sądzę każda firma). Chciałem tylko ciągnąć jeden konkretny dział na raz.Dynamicznie zmień węzeł nadzorcy na wartość null
W naszej bazie danych każdy szef działu również zgłasza się do dyrektora generalnego lub przewodniczącego. W jaki sposób mogę zmienić kolumnę reportsToEmpId
(w czasie wykonywania) dla szefa działu na NULL? Jeśli rodzic szefa działu nie należy do tego działu.
Oto moja reportsTo struktura tabeli:
empId, name, reportsToEmpId, deptId
100, John, 99, 1
101, Mary, 100, 1
102, Carol, 100, 1
99, Jim, null, 2
Odkąd tylko ciągnąć deptId = 1
i Jim
nie jest dept1
. Czy mogę dynamicznie zmieniać kolumnę John
'reportsToEmpId
na NULL
?
select fields I need
from reportsTo r
join employee e on r.empId = e.empId
join groupHightlight h on ...
where deptId=1
Próbowałem użyć tabeli tmp, ale wydaje się zbyt uciążliwe.
Original wyjściowa:
empId, name, reportsToEmpId, deptId
100, John, 99, 1
101, Mary, 100, 1
102, Carol, 100, 1
Oto mój oczekiwany wynik: (Jednak wolę nie dokonywać żadnych zmian na oryginalnym stole, gdyż w przeciwnym razie, jeśli chcę ciągnąć każdy, kto zgłosi się do dyrektora generalnego, a następnie I utracił "połączenie" między działami).
empId, name, reportsToEmpId, deptId
100, John, NULL, 1
101, Mary, 100, 1
102, Carol, 100, 1
Więc co oczekują jako wyjście tutaj? I podałeś tylko trochę niejasne informacje dla jednej z trzech tabel w zapytaniu. –
Cześć Sean, dziękuję. Zaktualizowałem moje pytanie. (Dodałem oczekiwany wynik do końca mojego pytania :-) –