来自两个联接表的不同记录,一个“ distinct”字段,控制日期

| Access 2007
TableA  
IDx      Filename  

TableB  
IDy     Date     Name  
表B中还有更多字段,但是应该可以。 IDy不是唯一的,可能重复。 IDx是唯一的,没有重复项。 我从什么开始:
 SELECT TableA.IDx, TableA.Filename, TableB.Date, TableB.Name  
 FROM TableA LEFT JOIN TableB ON TableA.IDx = TableB.IDy  
我要去的地方: (正如我在另一个问题中所述,我认为这太笼统了,无法回答意图。我无法将选择的答案转换为可用于两个表,也无法在分配的空间中添加评论以更详细地再次提出问题) 如果IDx = IDy产生重复,则基于TableA.ID的不同记录的列表,其中基于TableB.Date的TableB中的最新记录。 我希望这是可以理解的。     
已邀请:
这样的事情应该可以解决您的问题:
SELECT a.IDx, a.Filename, b1.Date, b1.Name
FROM ((TableA AS a)
  LEFT JOIN TableB AS b1 ON a.IDx = b1.IDy)
  LEFT JOIN TableB AS b2 ON b1.IDy = b2.IDy AND b1.Date < b2.Date
WHERE b2.IDy IS NULL
通过狡猾的设备将
TableB
的输出限制为仅对每个ѭ5the最新的
Date
的行,这涉及将ѭ3joining返回自身,并搜索对于任何给定的
Date
没有大于(晚于)日期的行。 事实证明,它与John Gibb的解决方案基本相同,只涉及
LEFT JOIN
(第二个)+
WHERE key IS NULL
,而不是involves10ѭ。     
不知道这是否可以在MS Access中使用,但是值得尝试一下:
SELECT TableA.IDx, TableA.Filename, TableB.Date, TableB.Name  
FROM TableA, TableB
WHERE TableA.Idx in (SELECT DISTINCT TableB.IDy FROM TableB)
    
根据评论,尝试以左联接形式编写的平局决胜局。
select * 
from TableA a
 left join TableB b
   on b.idy = a.idx
  and b.date < a.date
where b.idy is null
    

要回复问题请先登录注册