我在使用此Access SQL时遇到困难...我希望所有活动的CustomerID都出现,无论OrderDate是否匹配,我都无法弄清楚我做错了什么。
SELECT
tblCustomers_PullLists.CustomerID,
tblCustomers_PullLists.Title,
tblCustomers_PullLists.Active,
tblCustomers.FullName,
tblOrders.OrderDate,
tblCustomers.Notes
FROM
(
(
tblCustomers_PullLists
INNER JOIN
tblOrderDetails
ON tblCustomers_PullLists.Title = tblOrderDetails.Title
)
INNER JOIN
tblOrders
ON tblOrderDetails.OrderNumber = tblOrders.ID
)
LEFT JOIN
tblCustomers
ON tblCustomers_PullLists.CustomerID = tblCustomers.ID
WHERE (((tblCustomers_PullLists.Active)=Yes)
AND ((tblOrders.OrderDate)=[Please enter order date]))
ORDER BY tblCustomers_PullLists.CustomerID;
非常感谢任何帮助!!
答案 0 :(得分:1)
首先要注意的是您的查询有
(stuff) LEFT JOIN tblCustomers
如果您希望所有客户都出现,那么您可能想要一个正确的加入,而不是一个LEFT JOIN。
另一个问题是OrderDate。没有该日期订单的客户将具有NULL OrderDate值,因此您可能必须更改您的WHERE条件...
(tblOrders.OrderDate)=[Please enter order date]
...到...
(((tblOrders.OrderDate)=[Please enter order date]) OR (tblOrders.OrderDate IS NULL))
答案 1 :(得分:0)
那么,在这种情况下过滤器
AND ((tblOrders.OrderDate)=[Please enter order date])
没有任何意义。
删除where cluase的那一部分,你应该得到所有活跃的客户。