2013-06-13 49 views
0

我对这个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; 

任何帮助将不胜感激!!

回答

1

要注意的第一件事情是,你的查询有

(stuff) LEFT JOIN tblCustomers 

如果你希望所有的客户出现,那么你可能想右连接,而不是一个LEFT JOIN。

另一个问题是OrderDate。没有订单,该日期的客户将有NULL值的订购日期,所以你可能需要更改您的WHERE条件......

(tblOrders.OrderDate)=[Please enter order date] 

...到...

(((tblOrders.OrderDate)=[Please enter order date]) OR (tblOrders.OrderDate IS NULL)) 
0

那么,在这种情况下,过滤器

AND ((tblOrders.OrderDate)=[Please enter order date]) 

没有任何意义。

删除where cluase的那部分,并且您应该获得所有活动的Customers。

+0

我认为这可能是与此有关 - 不幸的是我需要那个过滤器。 –

+0

...我意识到我不小心将OrderDate从Select语句中移出,同时试图让这一点更容易看 - 它已被添加回来。 –

相关问题