2013-05-28 11 views
8

私はSQLテーブル名category.hereが構造を持っています。ストアドプロシージャの使用中に値を選択

ここ
slno  Category   Uppercategory 

1   Mouse    Computer 

2   Computer   Electronics 

3   Electronics   END 

4   END     - 

uppercategoryコンピュータでマウスやエレクトロニクスuppercategory ENd.Iが最後のカテゴリ(電子)を取得する必要があるので、その後uppercategory Electronics.andにおけるコンピュータエレクトロニクス最後uppercategoryあります大文字はENDです。 私はいくつかのコードを試しましたが、result.hereには私のコードがありません。

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

なぜ「終了」ではなく「ホークド」ですか? – 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

は、私は私のテーブルにこのクエリを試してみましたが、私は、私は、このステップの前に必要 カテゴリーUppercategory END のような答えを得る – Arun

+0

.........しようとします。uppercategoryがENDのときはカテゴリを指定する必要があります – Arun

+0

@ user2318361 - 具体的にどのようにあなたのサンプルデータから返される必要がありますか?コンピューター? –

関連する問題