2013-06-13 48 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語句中移出,同時試圖讓這一點更容易看 - 它已被添加回來。 –

相關問題