2017-02-20 5 views
-1

データベースに2つのテーブルがあります。 1つはGroupテーブル、もう1つはStatusテーブルです。どちらもGroupId共通です。だから、私は彼らと一緒に内なるだろう、私はすべてのレコードを取得します。ステータステーブルは、テーブルのstatus列があり、そのステータス欄には、今すぐストアドプロシージャ選択した値を返す

1) active 
2) not active 
3) pending 
4) approved 
5) placed 
6) unplaced 

のような6つの値のすべてのレコードは、ステータス列に関連する1つの列を持っていた。..

私は、レコードを取得するストアドプロシージャを必要とします活性化されている場合は、両方のテーブルを結合する内部レコードを取得します。ステータスが配置されると、配置された列レコードなどを取得します。ユーザーが何も選択しない場合、すべてのレコードを取得します。これをドロップダウンリストにバインドし、それらの値をフロントエンドのgridviewに表示します。

これは私のコードです:提供された情報に基づいて

create procedure Sp_SelectedStatus 
@Status varchar(20) as 
Begin 
if(@Status = 'Active') 
    Begin 
    Select A.GroupName , B.Brand , B.Model , 
      B.SerialNo , B.Status , B.AddedOn 
    from GroupDetails as A 
    inner join DeviceDetails as B 
    on A.GroupId = B.GroupId 
    where Status = 'Active' 
    End 
End 
+1

物事のカップル。テーブルスキーマを表形式で追加すると、質問に必要な結果が得られ、多くのタイピングが省けます。また、あなたが試したことを示してください。 – DarkKnight

+0

--if status = Active ステータスbからのa.GroupName、b.Brand、b.model、b.serialno、b.Statusの選択 内部結合グループa.GroupId = b.GroupId上の ここで、Status = 'Active ' – Jones

+0

私はしようとしています存在する場合は表示しません.. – Jones

答えて

0

、これは可能なストアドプロシージャである可能性があります。 "ユーザーが何も選択しなかった場合、すべてのレコードを取得します" - デフォルトの@Status変数はnullになります。これはオプションで、クエリはすべてのレコードを返します。

create procedure dbo.usp_GetStatus 
    @Status varchar(20) = null 
AS 

SET NOCOUNT ON; 

Select G.GroupName, D.Brand, D.Model, D.SerialNo, D.[Status], D.AddedOn 
from GroupDetails as G inner join 
    DeviceDetails as D on G.GroupId = D.GroupId 
where D.Status = IsNull(@Status, D.Status); 
関連する問題