如何获得符合条件的所有记录?

时间:2013-06-13 05:33:18

标签: sql ms-access ms-access-2007

我在使用此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;

非常感谢任何帮助!!

2 个答案:

答案 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的那一部分,你应该得到所有活跃的客户。

相关问题