2013-05-28 5 views
8

का उपयोग कर एक मान का चयन करें मेरे पास एक SQL तालिका नाम श्रेणी है। संरचना है।संग्रहीत प्रक्रिया का उपयोग कैसे करें

slno  Category   Uppercategory 

1   Mouse    Computer 

2   Computer   Electronics 

3   Electronics   END 

4   END     - 
यहाँ

uppercategory कंप्यूटर में माउस और फिर uppercategory Electronics.and इलेक्ट्रॉनिक्स में कंप्यूटर पिछले uppercategory क्योंकि इलेक्ट्रॉनिक्स होने uppercategory ENd.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

'अंत' के बजाय 'HOVED' क्यों? – sarwar026

+0

क्षमा करें .......... – Arun

उत्तर

3

आप इसे प्राप्त करने के लिए एक पुनरावर्ती क्वेरी का भी उपयोग कर सकते हैं।

;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 

तुम भी अंतिम प्रश्न के रूप में

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

इस्तेमाल कर सकते हैं। यह आपके प्रश्न में कोड के करीब निकटता है।

+0

कोशिश करेंगे ......... – Arun

+0

मैं अपनी तालिका में इस क्वेरी की कोशिश की लेकिन मैं की तरह श्रेणी Uppercategory अंत जवाब मैं इस कदम से पहले की जरूरत है श्रेणी को हटा दिया जब ऊपरी श्रेणी END – Arun

+0

@ user2318361 - तो विशेष रूप से आपको अपने उदाहरण डेटा से वापस लौटने की आवश्यकता क्या है? कंप्यूटर? –

संबंधित मुद्दे