繁体   English   中英

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

[英]How can I change this VBA code into a SQL Query using JOIN?

这是一个简单的问题,我刚开始使用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

好吧...我可以使用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

我意识到在SQL中必须有一个“ SEEK”命令,但是我很确定这是运行此查询的一种更聪明的方法。

尝试

SELECT *
FROM TBL_SALES
WHERE NOT EXISTS
(SELECT * FROM TBL_CUSTOMERS
WHERE TBL_CUSTOMERS.CUSTOMER_ID = TBL_SALES.CUSTOMER_ID)

也可以使用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

@Maarten van Leunen几乎完全回答了我要说的内容,因此不再赘述。 我确实有一个要说的要点:您真的有没有相关客户的订单吗? 我不确定这是否对您有效(似乎不太可能),但如果不是,则需要调查数据库的完整性并开始执行某些外键关系。 即,如果没有链接到有效客户记录的链接,您将无法保存订单记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM