我可以使用带有LEFT JOIN子句

时间:2017-09-26 23:05:08

标签: sql ms-access

FORE注意:此问题涉及属于FROM语句的IN子句,并允许您引用外部数据库。请不要将此与可能存在于WHERE子句中的IN语句混淆。

版本:MS Access 2016

外部表位于本地网络

我要做的事情的关键是从外部ACCDB数据库中获取[Employee]表并将其LEFT JOIN连接到本地[Employees](注意's')表。我正在尝试生成尚未添加到我的本地[Employees]表中的(未终止的)员工列表。如:

SELECT Employee.Last_Name, Employee.First_Name, Employee.Job_Title
FROM Employee IN "\\{full path}\Time Clock 1.0_be.accdb" 
LEFT JOIN Employees
ON Employee.Last_Name = Employees.LastName
AND Employee.First_Name = Employees.FirstName
WHERE Employees.FirstName IS NULL
AND Employee.Termination_Date = ""
ORDER BY Employee.Last_Name, Employee.First_Name;

只有上面的SQL不起作用。访问给了我永远不那么有帮助的Syntax error in FROM clause以使我神经质的精神错乱。

IN子句是否必须最后一次,是否会影响两个表?于:

https://msdn.microsoft.com/en-us/library/bb177907(v=office.12).aspx

他们说它可以与LEFT JOIN结合使用,但是他们没有指定两个表是否必须是外部的。

甚至可以将表从外部数据库LEFT JOIN连接到本地表吗?我不是真的想要正式链接表,因为这个查询只会偶尔运行,我不希望任何更多的流量ping时钟后端数据库比我必须。它的速度足够慢。

1 个答案:

答案 0 :(得分:1)

回答我原来的问题:

@cha建议我使用嵌套查询是正确的。这解决了内部表连接到外部表的问题。

@Gord Thompson有一种更具体的引用外部数据库的方式,在这个简单的例子中,这个方式对我来说比IN子句更清晰。程序员可能希望在连接到外部数据库的不同类型时使用IN子句,因为它使您能够指定IN子句中的所有内容。

最后,这一切都没有帮助我,因为我非常爱抚的数据库的火车残骸使用多值字段而Access 不会将内部表与多值字段链接到外部表。

那些追随你(可能是你自己)的人会感谢你观察第一和第二次正常表格,除了最不寻常和经过仔细考虑的情况以及永远不会使用多个有价值的字段,而不是为多对多关系链接表。

阿罗哈!