2014-09-24 151 views
0

我有兩個表dbo.tbRankdbo.tbStaff存儲過程

  • dbo.Rank我列RankIDRankName
  • dbo.Staff我列StaffID, StaffSNo, StaffRankID, StaffName, StaffGender

如何在tbStaffRankName得到RankIDtbRank

任何幫助,非常感謝。謝謝。

這裏是我的存儲過程tbStaff

ALTER PROCEDURE [dbo].[selectStaff] 
    @sno as varchar(10) 
AS 
BEGIN 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    if @sno = '' 
     begin 
      select 
       StaffID, StaffSNo as 'Staff Service No.', StaffRankID, 
       StaffName as 'Name', 
       case StaffGender 
        when 'f' then 'female' when 'm' then 'male' 
       end as 'Gender' 
      from tbStaff 
     end 
    else 
    begin 
     select 
     StaffID, StaffSNo, StaffRankID, StaffName, StaffGender 
     from tbStaff 
     where StaffSNo = @sno 
    end 
END 
+0

通過tbrank和tbstaff的rankid和staffrankid加入你的tbrank和tbstaff表,然後你可以從tbrank – 2014-09-24 11:43:01

回答

0

使用左連接或內部聯接,按您的需求。

select 
       a.StaffID, a.StaffSNo as 'Staff Service No.', a.StaffRankID, 
       a.StaffName as 'Name', 
       case a.StaffGender 
        when 'f' then 'female' when 'm' then 'male' 
       end as 'Gender' , b.RankName 
      from tbStaff a 
left outer join Rank b on b.RankID = a.StaffRankID 
0

試試下面的查詢

ALTER PROCEDURE [dbo].[selectStaff] 
    @sno AS VARCHAR(10) 
AS 
BEGIN 
IF LTRIM(RTRIM(@sno)) = '' 
    BEGIN 
     SELECT 
      tST.StaffID, 
      tST.StaffSNo AS 'Staff Service No.', 
      tST.StaffRankID, 
      tRK.RankName, 
      tST.StaffName AS 'Name', 
      CASE tST.StaffGender 
       WHEN 'f' THEN 'female' WHEN 'm' THEN 'male' 
      END AS Gender 
     FROM tbStaff tST 
     LEFT JOIN tbRank tRK ON tRK.RankID = tST.StaffRankID 
    END 
ELSE 
    BEGIN 
     SELECT 
      tST.StaffID, tST.StaffSNo, tST.StaffRankID, tRK.RankName, tST.StaffName, tST.StaffGender 
     FROM tbStaff tST 
     LEFT JOIN tbRank tRK ON tRK.RankID = tST.StaffRankID 
     WHERE tST.StaffSNo = @sno 
    END 
END 

更改聯接根據您的需要向左或INNER

0

這是我做到了。它的工作。感謝所有幫助過的人。非常感謝您的幫助。

ALTER PROCEDURE [DBO] [selectStaff] @sno爲varchar(10) AS BEGIN SET NOCOUNT ON。 如果@sno = '' 開始 選擇 tbStaff.StaffID, tbStaff.StaffSNo爲 '服務號', tbStaff.StaffRankID, tbRank.RankName如排名, tbStaff.StaffName如 '名稱', 情況下tbStaff.StaffGender 'F' 然後 '女性' 當 'm' 的然後 '男性' 端爲 '性別'

 from tbStaff 
     inner join tbRank on tbRank.RankID = tbStaff.StaffRankID 
    end 
else 
    begin 
     select 
     tbStaff.StaffID, 
     tbStaff.StaffSNo as 'Service No.', 
     tbStaff.StaffRankID, 
     tbRank.RankName as Rank, 
     tbStaff.StaffName as Name, 
     tbStaff.StaffGender from tbStaff 
     inner join tbRank on tbRank.RankID = tbStaff.StaffRankID 
     where [email protected] 
    end 

END *強調文本*當