2013-05-28 29 views
8

Tôi có một danh mục tên bảng SQL. Có cấu trúc.Cách sử dụng Quy trình được lưu trữ Chọn giá trị sử dụng trong khi

slno  Category   Uppercategory 

1   Mouse    Computer 

2   Computer   Electronics 

3   Electronics   END 

4   END     - 

Đây chuột trong máy tính uppercategory và sau đó là máy tính trong uppercategory Electronics.and Điện tử là uppercategory ngoái vì điện tử có ENd.I uppercategory cần phải nhận được loại cuối cùng (điện tử) mà uppercatergory là END. Tôi đã thử một số mã nhưng không nhận được kết quả. Có mã của tôi.

USE [Database1] 
GO 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[kt_category] 
     @Dcat AS NVARCHAR(250) 
AS 
DECLARE @tmp TABLE (cater NVARCHAR(255)) 

BEGIN 

INSERT INTO @tmp 
SELECT UPPERCATEGORY FROM CATEGORY where [email protected] 

while(SELECT UPPERCATEGORY FROM CATEGORY)= 'END' 
RETURN 
END 
+1

Tại sao 'HOVED' thay vì 'END'? – sarwar026

+0

Xin lỗi .......... – Arun

Trả lời

3

Bạn cũng có thể sử dụng truy vấn đệ quy để đạt được điều này.

;WITH R 
    AS (SELECT *, 
       1 AS Level 
     FROM CATEGORY 
     WHERE Category = @Dcat 
     UNION ALL 
     SELECT C.*, 
       R.Level + 1 
     FROM CATEGORY C 
       JOIN R 
        ON R.Uppercategory = C.Category) 
SELECT TOP 1 * 
FROM R 
ORDER BY Level DESC 

Bạn cũng có thể sử dụng

SELECT TOP 1 * 
FROM R 
WHERE Uppercategory = 'End' 
ORDER BY Level 

như truy vấn chính thức. Điều này có ngữ nghĩa gần hơn với mã trong câu hỏi của bạn.

+0

Tôi sẽ thử ......... – Arun

+0

Tôi đã thử truy vấn này trong bảng nhưng tôi nhận được câu trả lời như Danh mục Uppercategory END Tôi cần Trước bước này .need danh mục khi danh mục trên là END – Arun

+0

@ user2318361 - Vì vậy, cụ thể những gì bạn cần được trả lại từ dữ liệu ví dụ của bạn? Máy vi tính? –

Các vấn đề liên quan