问题描述
我正在尝试构造一个LEFT JOIN查询,其中查询的“右侧”只是与“左侧”的PK相关的最新记录。
查询的左侧来自名为Oppportunity
的表。该表的PK为OpportunityID
。
查询的右侧来自名为tblNotes
的表,其中包含NotesID
作为其PK和NotesDate
作为其数据字段之一。 tblNotes
还包含OpportunityID
作为FK。
这是我的sql:
SELECT Opportunity.OpportunityID,tblNotes.NotesDate,tblNotes.NotesID
FROM Opportunity LEFT JOIN tblNotes ON Opportunity.OpportunityID = tblNotes.opportunityid
ORDER BY Opportunity.OpportunityID;
结果如下:
这是我需要的,包括空白字段。
根据我在另一篇文章中获得的帮助,我知道我可以为每个NoteID
使用MAX OpportunityID
。这是我尝试过的。
SELECT Opportunity.OpportunityID,tblNotes.NotesID
FROM Opportunity LEFT JOIN tblNotes ON Opportunity.OpportunityID = tblNotes.opportunityid INNER JOIN
(SELECT n.NotesID
FROM tblNotes AS n
WHERE n.notesId = (select top 1 n2.notesId FROM tblNotes as n2
)
ORDER BY Opportunity.OpportunityID;
社区提供的任何帮助都将受到赞赏。我对Excel很好,但是Access对我来说是很新的。
解决方法
您可以在java.io.IOException: Failed to instantiate extractor
at android.media.MediaExtractor.setDataSource(Native Method)
之前获得最新的行 first :
join
,
我认为您需要以下逻辑。想法是在SELECT o.OpportunityID,n.NotesDate,n.NotesID
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;
中添加一个条件,该条件使用相关子查询来对每个left join
的最新NotesDate
进行过滤
OpportunityID