SQL查询连接问题

SQL查询连接问题,sql,sql-server,join,Sql,Sql Server,Join,我正在使用SQLServer2005 我在执行此查询时遇到一些问题 我的代码是 ALTER PROCEDURE [dbo].[Get] @ApplicantID int AS BEGIN SELECT isnull(M_EvalApplicationStatuses.EvalApplicationStatus,'') EvalApplicationStatu

我正在使用SQLServer2005

我在执行此查询时遇到一些问题

我的代码是

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 =@ApplicantID
END 
现在,这项工作非常有效。但是我想从另一个表中获取数据,所以我只是将该表加入到这个查询中。在这里,我发现了问题所在。我的新表名是
[APP\u 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

这两个查询分别运行良好。。。但是我想连接这两个查询,结果将在一个表中得到。我该怎么做?请帮助我

只需将第一个和第二个查询作为子查询连接起来。请在SqlFiddle中更新结构,或者在这里更新结构。这样就很容易给你答案了

这是密码

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 =@ApplicantID  

END

干杯。

根据您在sarathkumar回答中的评论,问题是列名称“applicationId”不明确。请尝试下面的方法解决该问题。我已根据您的评论更新了
where子句

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 =@ApplicantID
END
left outer join [APP_DocumentTracking] on [APP_DocumentTracking].ApplicantID=APP_Applications.ApplicantID 
WHERE [APP_DocumentTracking].ApplicantID =@ApplicantID END

您是否获得SP的多个结果集?“我发现了问题”,您发现了什么问题?我不知道如何连接这两个表这两个表之间是否存在关系?我想没有明确的关系,所以你觉得很难。在本例中,我看到两个表中的AppliantId都尝试使用此字段进行联接。AppliantId是APP_Applications表中的primery键,AppliantId也是APP_DocumentTracking中的primery键,这里是外键。我刚刚将第一个查询结果与APP_DocumentTracking表左键联接,但是使用leftjoin我正在编写APP_DocumentTracking.applicationId=APP_Applications.applicationId。但是相同的applicationId比较用于[APP_DocumentTracking]上的where条件…左外部连接[APP_DocumentTracking].applicationId=APP\u Applications.applicationId,其中applicationId=@applicationId end我发现的问题是不明确的列名“applicationId”。用于检查applicationId是唯一常见的field@Monica如果这对您有帮助,请将此标记为答案:)。