這個問題類似,但它們與查詢問題一直沒有完全解決:Access 2007年 - 左加入到查詢返回#錯誤,而不是空
#Error showing up in multiple LEFT JOIN statement Access query when value should be NULL
我得到#錯誤,當我期待看到一個空做左連接在沒有相應的記錄上的右側時加入:
Chain CasesPerMonthPerStore MonthOfFirstOrder
Naturally 2.3 5/1/2011
Tom's Market #Error
Livingstons #Error
EverClear 3.1 7/1/2012
Bob's Market 2.66 5/1/2012
Andy's Exports #Error
Jamestowns 0.89 7/1/2012
,如果我將數據複製到一個表,並留下加入到這個表它工作正常,所以我認爲t的語法有錯誤他查詢:
SELECT
MonthRange.Chain,
MonthRange.CasesShipped/IIf(MonthsSinceFirstOrder.Months>DateDiff("m",QueryDates.StartDate,QueryDates.EndDate)+1,
DateDiff("m",QueryDates.StartDate,QueryDates.EndDate)+1,
MonthsSinceFirstOrder.Months)/NumStores.NumberOfStores AS CasesPerMonthPerStore,
MonthsSinceFirstOrder.MonthOfFirstOrder
FROM
QueryDates,
(
MonthRange
INNER JOIN
NumStores
ON MonthRange.Chain=NumStores.Chain
)
INNER JOIN
MonthsSinceFirstOrder
ON MonthRange.Chain=MonthsSinceFirstOrder.Chain;
這個SQL返回正確的結果,它只是它的行爲,當左連接到它返回#Errors。
nb中間的奇怪Iif語句檢查自第一個訂單以來的月數是否大於指定日期範圍中包含的月數 - 所以如果日期範圍有6個月並且第一個訂單在結束日期前9個月,它使用6;如果第一個命令是在結束日期之前只有4個月,它採用4
- 編輯更新 -
對,我把查詢內容由一個一個出來,這是最簡單的我可以得到同時仍重建左連接錯誤:
SELECT
MonthRange.Chain,
DateDiff("m",QueryDates.StartDate,QueryDates.EndDate)+1 AS CasesPerMonthPerStore
FROM
QueryDates,
MonthRange;
這就是我如何左側的接合部它:
SELECT
Chains.Chain,
ErrorQuery.CasesPerMonthPerStore
FROM
Chains
LEFT JOIN
ErrorQuery
ON Chains.Chain=ErrorQuery.Chain;
是否在此SQL看什麼錯?
使用最少的情況下[MonthRange],[QueryDates]和[鏈]都是表我無法重建問題。 *您的案件中是否存有*這些保存的查詢? –
是的,有幾層嵌套查詢可以實現這一目標。我會檢查這些查詢並查看是否有任何錯誤。在過去,我在某個領域進行分組時遇到了問題,然後從Select語句中刪除了該字段,但將其留在了group by子句中。 Access並沒有採用這種方式,並且在大多數情況下它運行良好,但在某些情況下它會引發奇怪的結果。如果我瞭解它的底部,我會在這裏發佈答案,謝謝你花時間檢查上面的查詢。 – Wilskt