W serwerze SQLTSQL - Podczas gdy pętla w select?
Ok, więc pracuję z tabelą bazy danych, w której wiersze mogą mieć nadrzędne wiersze, które mogą mieć własne wiersze nadrzędne. Muszę wybrać główny "wiersz". Nie wiem, jak to zrobić najlepiej.
Istnieje pole o nazwie ParentId, które łączy wiersz z wierszem o tym identyfikatorze. Kiedy ParentId = 0, jest to wiersz główny.
To moje zapytanie teraz:
SELECT Releases.Name,WorkLog.WorkLogId
FROM WorkLog,Releases
WHERE
Releases.ReleaseId = WorkLog.ReleaseId
and WorkLogDateTime >= @StartDate
and WorkLogDateTime <= @end
I naprawdę nie trzeba nazwie wydania z wydawnictw dziecięcych, chcę tylko korzeń Nazwa Release, więc chcę, aby wybrać wynik pętli while tak:
WHILE (ParentReleaseId != 0)
BEGIN
@ReleaseId = ParentReleaseId
END
Select Release.Name
where Release.RealeaseId = @ReleaseId
wiem, że składnia jest straszne, ale miejmy nadzieję, że daję ci pomysł co usiłuję acheive.
Więc zgaduję istnieje więcej niż jeden uwolnienie się od 'ParentReleaseId' równa zero? – AakashM
Czy mówisz, że tabela Uwolnienia jest hierarchiczna, np. Release X ma poprzednika, a następnie to wydanie ma swój poprzednik i tak dalej? Tak więc problemem jest znalezienie * oryginalnej * wersji dla dowolnego * późniejszego * wydania występującego w określonych datach? –
Mam nadzieję, że jesteś w 2005 lub później - czy możesz potwierdzić? –