访问-LEFT JOIN查询仅最新记录

问题描述

我正在尝试构造一个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;

结果如下:

enter image description here

这是我需要的,包括空白字段。

enter image description here

根据我在另一篇文章中获得的帮助,我知道我可以为每个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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...