2017-02-20 114 views
-1

我在數據庫中有兩個表。一個是Group表,另一個是Status表。兩者都有GroupId通用。所以我會內心的加入他們,我會得到所有的記錄。狀態表在表中狀態列中,狀態列有6個值一樣存儲過程返回選定的值

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

現在所有的記錄都有一列相關的狀態欄..

我需要一個存儲過程,將得到記錄如果它處於活動狀態,我們將獲得內部連接兩個表的記錄,如果它處於放置狀態,我們將獲取放置的列記錄等,如果用戶沒有選擇任何內容,我們將獲取所有記錄。我將綁定到下拉列表,這些值將顯示在前端的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 a on aGroupId = b.GroupId其中Status ='Active ' – Jones

+0

我試圖通過如果存在顯示否則不。 – Jones

回答

0

根據所提供的信息,這可能是一個可能的存儲過程。 「如果用戶沒有選擇任何東西,我們將獲得所有記錄」 - 默認@Status變量爲空,這使得它是可選的,查詢將返回所有記錄。

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);