SQL查询连接问题
我正在使用SQLServer2005 我在执行此查询时遇到一些问题 我的代码是SQL查询连接问题,sql,sql-server,join,Sql,Sql Server,Join,我正在使用SQLServer2005 我在执行此查询时遇到一些问题 我的代码是 ALTER PROCEDURE [dbo].[Get] @ApplicantID int AS BEGIN SELECT isnull(M_EvalApplicationStatuses.EvalApplicationStatus,'') EvalApplicationStatu
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如果这对您有帮助,请将此标记为答案:)。