Trong máy chủ SQLTSQL - Trong khi vòng lặp trong phạm vi được chọn?
Ok, vì vậy tôi đang làm việc với một bảng cơ sở dữ liệu trong đó các hàng có thể có hàng cha, sau đó có thể có hàng cha mẹ của riêng chúng. Tôi cần chọn 'hàng' gốc. Tôi không biết cách tốt nhất để làm điều này.
Có một trường có tên ParentId, liên kết hàng với hàng có ID đó. Khi ParentId = 0, nó là hàng gốc.
Đây là câu hỏi của tôi bây giờ:
SELECT Releases.Name,WorkLog.WorkLogId
FROM WorkLog,Releases
WHERE
Releases.ReleaseId = WorkLog.ReleaseId
and WorkLogDateTime >= @StartDate
and WorkLogDateTime <= @end
Tôi không thực sự cần Name phát hành của phiên bản trẻ, tôi muốn chỉ gốc phát hành Tên, vì vậy tôi muốn chọn kết quả của vòng lặp while như sau:
WHILE (ParentReleaseId != 0)
BEGIN
@ReleaseId = ParentReleaseId
END
Select Release.Name
where Release.RealeaseId = @ReleaseId
Tôi biết cú pháp đó thật kinh khủng, nhưng hy vọng tôi sẽ cho bạn ý tưởng về những gì tôi đang cố gắng đạt được.
Vì vậy, tôi đoán có nhiều hơn một phiên bản với 'ParentReleaseId' bằng số không? – AakashM
Bạn có nói rằng bảng Bản phát hành có phân cấp không, ví dụ: Bản phát hành X có phiên bản tiền nhiệm và sau đó bản phát hành đó có người tiền nhiệm của riêng nó, v.v. Vì vậy, vấn đề là tìm bản phát hành * gốc * cho bất kỳ bản phát hành * sau * nào xảy ra trong các ngày được chỉ định? –
Hy vọng rằng, bạn vào năm 2005 hoặc mới hơn - bạn có thể xác nhận không? –