如何解决访问-基于主键PK将左联接添加到返回值
另一个用户@ gordon-linoff帮助我创建了一个查询,以提取表中每个NoteDate
的最新OpportunityID
。我想扩展它以提供NotesUser
,它与其他两个元素在同一表中。
我的挑战是NotesUser
返回UserID
(是PK)而不是UserName
。
SELECT o.OpportunityID,n.NotesDate,n.NotesID,n.NotesUser
FROM (Opportunity AS o LEFT JOIN (SELECT n.* FROM tblNotes AS n WHERE n.NotesDate = (SELECT MAX(n2.NotesDate)
FROM tblNotes as n2
WHERE n2.OpportunityID = n.OpportunityID
)) AS n ON o.OpportunityID = n.opportunityid)
ORDER BY o.OpportunityID;
产生此结果:
NotesUser
是一个名为tblUsers
的表的PK,该表包含两列。 ID
和UserName
这是我到目前为止获得的代码
SELECT o.OpportunityID,n.NotesUser,tblUsers.UserName
FROM (Opportunity AS o LEFT JOIN
(SELECT n.*
FROM tblNotes AS n
WHERE n.NotesDate = (SELECT MAX(n2.NotesDate)
FROM tblNotes as n2
WHERE n2.OpportunityID = n.OpportunityID)
AS n ON o.OpportunityID = n.opportunityid) LEFT JOIN
(SELECT tblUsers.UserName
FROM tblUsers
WHERE n.NoteUser=tblusers.username)
ORDER BY o.OpportunityID;
更新:这是tblUsers的样子。
解决方法
如果我的理解正确,您只需添加一个LEFT JOIN
。无需子查询:
SELECT o.OpportunityID,n.NotesDate,n.NotesID,n.NotesUser,u.username
FROM (Opportunity AS o LEFT JOIN
(SELECT n.*
FROM tblNotes AS n
WHERE n.NotesDate = (SELECT MAX(n2.NotesDate)
FROM tblNotes as n2
WHERE n2.OpportunityID = n.OpportunityID
)
) AS n
ON o.OpportunityID = n.opportunityid
) LEFT JOIN
tblUsers as u
ON n.NoteUser = u.id
ORDER BY o.OpportunityID;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。