query runs slowly as soon as I add a join

qwertyjjj

Registered User.
Local time
Yesterday, 19:59
Joined
Aug 8, 2006
Messages
262
The join structure here is a little different to what I'm used to in SQL Server. For some reason, Access adds brackets round everything.

When I run this, it's lightning fast:
SELECT IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code]) AS Expr1, ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))/1000) AS Months0To3, ((Sum([121To150])+Sum([151To180]))/1000) AS Months4To5, (Sum([181To365])/1000) AS Months6To12, (Sum([MoreThan366])/1000) AS [Months12+], ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))+(Sum([121To150])+Sum([151To180]))+Sum([181To365])+Sum([MoreThan366]))/1000 AS TotalDebt
FROM StructureCompanyCodes
LEFT JOIN zarageddebt_CURR ON StructureCompanyCodes.[Company Code] = zarageddebt_CURR.CoCd)
GROUP BY IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code])


When I run this, it takes at least 15 seconds to bring back data and the baddebt_CURR table isn't that large. From the brackets, it looks like it's returning a resultset from the first join and then joining tht again to the baddebt_CURR table:
SELECT IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code]) AS Expr1, ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))/1000) AS Months0To3, ((Sum([121To150])+Sum([151To180]))/1000) AS Months4To5, (Sum([181To365])/1000) AS Months6To12, (Sum([MoreThan366])/1000) AS [Months12+], ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))+(Sum([121To150])+Sum([151To180]))+Sum([181To365])+Sum([MoreThan366]))/1000 AS TotalDebt, Sum(baddebt_CURR.[Bad Debt]) AS [SumOfBad Debt]
FROM (StructureCompanyCodes LEFT JOIN zarageddebt_CURR ON StructureCompanyCodes.[Company Code] = zarageddebt_CURR.CoCd)
LEFT JOIN baddebt_CURR ON StructureCompanyCodes.[Company Code] = baddebt_CURR.CoCd
GROUP BY IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code])


All I want to do is join from the first table onto both tables and group the data. Any ideas if the join is wrong?
 

Users who are viewing this thread

Back
Top Bottom