2013-05-28 15 views
8

Ho una categoria nome tabella SQL. C'è la struttura.Come utilizzare la stored procedure Selezionare un valore utilizzando

slno  Category   Uppercategory 

1   Mouse    Computer 

2   Computer   Electronics 

3   Electronics   END 

4   END     - 

Qui il mouse nel computer uppercategory e quindi il computer nella uppercategory Electronics.and L'elettronica è l'ultimo uppercategory perché l'Elettronica avere le ENd.I uppercategory bisogno di ottenere l'ultima categoria (Elettronica), che la uppercatergory è END. Ho provato un po 'di codice ma non ho ottenuto il risultato. C'è il mio codice.

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

Perché "HOVED" anziché "END"? – sarwar026

+0

dispiace .......... – Arun

risposta

3

È inoltre possibile utilizzare una query ricorsiva per ottenere ciò.

;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 

Si potrebbe anche usare

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

come la query finale. Questo ha una semantica più vicina al codice nella tua domanda.

+0

cercherà ......... – Arun

+0

Ho provato questa domanda a mio tavolo, ma io ottenere la risposta come Categoria Uppercategory FINE ho bisogno prima di questo passaggio .necessario la categoria quando uppercategory è END – Arun

+0

@ user2318361 - Quindi, in particolare, cosa è necessario restituito dai dati di esempio? Computer? –

Problemi correlati