2014-01-21 125 views
0

我正在使用SQL Server 2005.SQL查詢連接問題

我在執行此查詢時遇到了一些問題。

我的代碼是

ALTER PROCEDURE [dbo].[Get]   
    @ApplicantID int    

AS      
BEGIN 
    SELECT 
     isnull(M_EvalApplicationStatuses.EvalApplicationStatus,'')  EvalApplicationStatus, 
     isnull(M_Users.CompletionMailSent,'') MailSent, 
     isnull(APP_Applications.FirstName,'') FirstName, 
     isnull(APP_Applications.LastName,'') LastName, 
     isnull(M_Users.UserName,'') UserName, 
     isnull(APP_Applications.DocTrackingGenComment,'') DocTrackingGenComment 

FROM 
     APP_Applications 
    left outer join 
     M_Users 
    ON 
     APP_Applications.UserID = M_Users.UserID       
    left outer join 
     M_EvalApplicationStatuses 
    ON 
     APP_Applications.Status = M_EvalApplicationStatuses.EvalApplicationStatusID and M_EvalApplicationStatuses.Status = 1      

WHERE 
     ApplicantID [email protected] 
END 

現在這完美的作品。但我想從另一個表中獲取數據,所以我只是將該表連接到該查詢。這裏我發現了這個問題。我的新表名是[APP_DocumentTracking],以及我用來檢索數據的下面的查詢。

SELECT DISTINCT 
    isnull(APP_DocumentTracking.Date,'') Date, 
    isnull(APP_DocumentTracking.IntervTime,'') IntervTime, 
    isnull(APP_DocumentTracking.Telephoneinterview,'') Telephoneinterview 
FROM [APP_DocumentTracking] 
where APP_DocumentTracking.ApplicantID = @ApplicantID 

這兩個查詢分開工作正常......但我想加入這兩個查詢,結果將得到在一個表中。我怎樣才能做到這一點? plz幫助我

+0

您是否爲SP獲得多個結果集? – DhruvJoshi

+1

「我在這裏發現了這個問題」,你發現了什麼問題? – Naveen

+0

我不知道如何加入這兩張牌 – Monica

回答

0

根據您在sarathkumar的回答中的評論,問題是不明確的列名'ApplicantID'。嘗試下面的問題。我已更新您的評論中的where clause

left outer join [APP_DocumentTracking] on [APP_DocumentTracking].ApplicantID=APP_Applications.ApplicantID 
WHERE [APP_DocumentTracking].ApplicantID [email protected] END 
+0

謝謝你Naveen ... – Monica

+0

@Monica標記此作爲回答,如果這有助於你:)。 – Naveen

0

剛剛加入與第一和第二個。請子查詢更新結構SqlFiddle或這裏Itself.Then它會很容易給ü答案...

下面是代碼

ALTER PROCEDURE [dbo].[Get]   
    @ApplicantID int    

AS      
BEGIN 
    SELECT 
     isnull(M_EvalApplicationStatuses.EvalApplicationStatus,'')  EvalApplicationStatus, 
     isnull(M_Users.CompletionMailSent,'') MailSent, 
     isnull(APP_Applications.FirstName,'') FirstName, 
     isnull(APP_Applications.LastName,'') LastName, 
     isnull(M_Users.UserName,'') UserName, 
     isnull(APP_Applications.DocTrackingGenComment,'') DocTrackingGenComment 
     ,Trace.* 

FROM 
     APP_Applications 
    left outer join 
     M_Users 
    ON 
     APP_Applications.UserID = M_Users.UserID       
    left outer join 
     M_EvalApplicationStatuses 
    ON 
     APP_Applications.Status = M_EvalApplicationStatuses.EvalApplicationStatusID and M_EvalApplicationStatuses.Status = 1      


LEFT JOIN 

(SELECT DISTINCT 
    isnull(APP_DocumentTracking.Date,'') Date, 
    isnull(APP_DocumentTracking.IntervTime,'') IntervTime, 
    isnull(APP_DocumentTracking.Telephoneinterview,'') Telephoneinterview 
FROM [APP_DocumentTracking] 
where APP_DocumentTracking.ApplicantID = @ApplicantID 
) AS Trace 

ON APP_Applications.ApplicantID = Trace.ApplicantID 

WHERE APP_Applications.ApplicantID [email protected] 

END 

乾杯。

+0

ApplicantID是APP_Applications表中的主鍵,ApplicantID也在APP_DocumentTracking中,這裏是外鍵。 – Monica

+0

我剛剛加入與APP_DocumentTracking表的第一個查詢結果,但使用leftjoin我正在寫APP_DocumentTracking .ApplicantID = APP_Applications .ApplicantID.But相同ApplicantID比較用於哪裏條件... – Monica

+0

左外連接 \t [APP_DocumentTracking] on [APP_DocumentTracking] .ApplicantID = APP_Applications.ApplicantID WHERE \t \t ApplicantID = @ ApplicantID END – Monica

0
ALTER PROCEDURE [dbo].[Get]   
    @ApplicantID int    

AS      
BEGIN 
    SELECT 
     isnull(M_EvalApplicationStatuses.EvalApplicationStatus,'')  EvalApplicationStatus, 
     isnull(M_Users.CompletionMailSent,'') MailSent, 
     isnull(APP_Applications.FirstName,'') FirstName, 
     isnull(APP_Applications.LastName,'') LastName, 
     isnull(M_Users.UserName,'') UserName, 
     isnull(APP_Applications.DocTrackingGenComment,'') DocTrackingGenComment 

FROM APP_Applications 
    left outer join M_Users 
    ON APP_Applications.UserID = M_Users.UserID       
    left outer join 
     M_EvalApplicationStatuses 
    ON 
     APP_Applications.Status = M_EvalApplicationStatuses.EvalApplicationStatusID and M_EvalApplicationStatuses.Status = 1 

    left join 
     (
     SELECT DISTINCT 
      isnull(APP_DocumentTracking.Date,'') Date, 
      isnull(APP_DocumentTracking.IntervTime,'') IntervTime, 
      isnull(APP_DocumentTracking.Telephoneinterview,'') Telephoneinterview 
      APP_DocumentTracking.ApplicantID 
     FROM [APP_DocumentTracking] 
     where APP_DocumentTracking.ApplicantID = @ApplicantID 
     ) AliasSubquery 
     on 1=1 

WHERE 
     ApplicantID [email protected] 
END