2010-12-31 16 views
0

私はテーブルの概要と呼ばれていると、テーブル内のデータが次のようになります。私は種類に基づいて親を引っ張るために持っているSPを書いていますT-SQL QUERY PROBLEM

ID  Type Name   Parent 

1  Act  Rent   Null 
2  Eng  E21-01-Rent Rent 
3  Prj  P01-12-Rent E21-01-Rent 
1  Act  Fin   Null 
2  Eng  E13-27-Fin Fin 
3  Prj  P56-35-Fin E13-27-Fin 

。ここでは、常にタイプ法は、ID 1を持っている、ENGがID 2を持っており、PRJは型ACTの親は タイプのENG親が法であると タイプPRJの親は工学

が今私である、常にnullであるID 3.

を持っています詳細テーブルと呼ばれるテーブルがあります。詳細テーブルのデータをサマリーテーブルに挿入するSPを作成しています。

私はパラメータとしてIDを渡しています:

私は親に問題があります。それをどうやって得るのですか?

IDが1のときにparentがNullだと言うことはできますが、IDが2の場合は、IDが3の場合もparentもID2の名前の場合と同じようにIDの名前です。

どうすれば入手できますか?

誰もこれで私を助けることができます:

+1

このクエリを試してみてください –

+0

私は詳細テーブルにID、名前、タイプを持っています –

+0

親はあなたのデータにどのように関連していますか?そうでない場合、そしてあなたが質問で説明するルールを通してのみである場合、どの3つの要素が一緒にグループ化されているかをどのように知っていますか? –

答えて

1

私はあなたのデータモデルを再訪問助言、多分これは単なる親の列に@Parentを挿入...

/* @Parent is VarChar(255) because definition is unknown. 
    We use Top(1) because in example ID is not unique. 
    We assume the ID being passed in is declared as @ID.*/ 
Declare @ParentID Int 
Set @ParentID=(@ID-1) 
Declare @Parent VarChar(255) 
Set @Parent = (Select Top(1) Name From Summary 
       Where [email protected]) 

をするのに役立ちます。

1

このモデルでは、常に最初の行がタイプされるため、prjは常に親「E21-01-Rent」を持つため、プライマリキー(一意の別のID)を持つ必要があると思います「E13-27-Fin」に到達する方法。で、最後の

はあなたの詳細テーブルの定義は何ですか?

Select id,name,(Select Top 1 [Name] From [Summary] 
       Where [email protected] -1) as parent2 
from [Summary] 
where id = @ID