Select MS Access内部联接最近的条目

Select MS Access内部联接最近的条目,select,ms-access-2007,inner-join,Select,Ms Access 2007,Inner Join,我在尝试让Microsoft Access 2007接受我的SQL查询时遇到一些问题,但它不断向我抛出语法错误,无法帮助我纠正问题 我有两张桌子,我们叫他们顾客和订单吧 我需要一些客户的详细信息,但也需要一些最新订单的详细信息。我目前有这样一个查询: SELECT c.ID, c.Name, c.Address, o.ID, o.Date, o.TotalPrice FROM Customers c INNER JOIN Orders o ON c.ID = o.CustomerID AND o

我在尝试让Microsoft Access 2007接受我的SQL查询时遇到一些问题,但它不断向我抛出语法错误,无法帮助我纠正问题

我有两张桌子,我们叫他们顾客和订单吧

我需要一些客户的详细信息,但也需要一些最新订单的详细信息。我目前有这样一个查询:

SELECT c.ID, c.Name, c.Address, o.ID, o.Date, o.TotalPrice
FROM Customers c
INNER JOIN Orders o
ON c.ID = o.CustomerID
AND o.ID = (SELECT TOP 1 ID FROM Orders WHERE CustomerID = c.ID ORDER BY Date DESC)
对我来说,它似乎是有效的,但Access不断向我抛出“语法错误”,当我点击OK时,它会选择一段甚至和它无关的SQL文本

如果我去掉额外的SELECT子句,它会起作用,但显然不是我所需要的


有什么想法吗?

您不能使用,因此在MS Access中,将其更改为WHERE。此外,列(字段)名称中还有两个保留字-名称、日期。如果不以表名或别名作为前缀,或者更好地说,不以重命名作为前缀,则应将其括在方括号中

SELECT c.ID, c.Name, c.Address, o.ID, o.Date, o.TotalPrice
FROM Customers c
INNER JOIN Orders o
ON c.ID = o.CustomerID
WHERE o.ID = (
     SELECT TOP 1 ID FROM Orders 
     WHERE CustomerID = c.ID ORDER BY [Date] DESC)

我研究了如何在MicrosoftAccess中实现这一点。您可以在预先排序的子查询上执行内部联接。这样,您就不必在不受支持的条件下执行多个

SELECT c.ID, c.Name, c.Address, o.OrderNo, o.OrderDate, o.TotalPrice
FROM Customers c
INNER JOIN (SELECT * FROM Orders ORDER BY OrderDate DESC) o
ON c.ID = o.CustomerID

这是另一个故事,但它的效率有多高…

cmon dude,“语法错误”是什么??(不是我的反对票,顺便说一句)子查询中的
CustomerID
可能不明确。但是,我不确定。米奇,这是微软Access。它不必告诉您错误的原因!字面意思是“查询中的语法错误”,就是这样。哎呀,我以前见过。然后突出显示一些随机的东西。非常感谢访问。相信我,如果可以的话,我会使用SQL Server。查询表达式“”中存在语法错误。确切地说。不起作用,因为
WHERE
子句用于过滤最终结果。这不是您的查询以稍微不同的方式所做的吗?