如何使用JOIN将此VBA代码更改为SQL查询?

Joh*_*ode 1 sql ms-access vba

这是一个简单的问题,我开始使用SQL,而且我遇到了很多问题.

我有TBL_SALES和TBL_CUSTOMERS.两者都可以通过字段CUSTOMER_ID加入.客户可能拥有CUSTOMER_ID且在TBL_CUSTOMERS上没有条目

我想在TBL_SALES上找到TBL_CUSTOMERS上没有条目的所有条目.

我认为这与之相反

SELECT UNIQUE TBL_SALES.CUSTOMER_ID, TBL_CUSTOMERS.CUSTOMER_ID
FROM TBL_SALES, TBL_CUSTOMERS
WHERE TBL_SALES.CUSTOMER_ID = TBL_CUSTOMERS.CUSTOMER_ID
Run Code Online (Sandbox Code Playgroud)

嗯......我可以使用SEEK和NOMATCH的VBA代码来做到这一点.但我知道它没有生产力.如果我尝试使用此代码,它不起作用:

SELECT UNIQUE TBL_SALES.CUSTOMER_ID, TBL_CUSTOMERS.CUSTOMER_ID
FROM TBL_SALES, TBL_CUSTOMERS
WHERE TBL_SALES.CUSTOMER_ID <> TBL_CUSTOMERS.CUSTOMER_ID
Run Code Online (Sandbox Code Playgroud)

我意识到SQL中必须有一个'SEEK'命令,但我很确定这是运行此查询的更智能的方法.

Maa*_*nen 5

尝试

SELECT *
FROM TBL_SALES
WHERE NOT EXISTS
(SELECT * FROM TBL_CUSTOMERS
WHERE TBL_CUSTOMERS.CUSTOMER_ID = TBL_SALES.CUSTOMER_ID)
Run Code Online (Sandbox Code Playgroud)

也可以使用LEFT JOIN,它选择"左边"的所有记录,无论是否存在"右边"的现有记录.

SELECT *
FROM TBL_SALES LEFT JOIN TBL_CUSTOMERS
ON TBL_SALES.CUSTOMER_ID = TBL_CUSTOMERS.CUSTOMER_ID
WHERE TBL_CUSTOMERS.CUSTOMER_ID IS NULL
Run Code Online (Sandbox Code Playgroud)