Avatar billede hugopedersen Nybegynder
24. september 2008 - 14:30 Der er 11 kommentarer og
1 løsning

Opdatering af tællerværdier

Jeg har nogle data der består af følgende felter
CenterID
KabineNo
UgeNr
Total

Sorteret efter CenterID, KabineNo og UgeNr

Nu skal jeg finde differencen mellem Total ugeX og Total ugeX-1
(altså tilvæksten fra foregående uge)

Og det skal helst være noget der er rimeligt optimeret da jeg på nuværende tidspunkt har > 235.000 records for 2007 og 2008 (alle før 2007 har jeg allerede valgt fra)
Avatar billede terry Ekspert
24. september 2008 - 18:24 #1
Maybe something like this
Avatar billede terry Ekspert
24. september 2008 - 18:24 #2
!

SELECT tblKabin.CenterID, tblKabin.KabinNo, tblKabin.UgeNr, [tblKabin]![Total]-(SELECT TOP 1 Total from TblKabin K WHERE K![CenterID] = [tblKabin]![CenterID] AND K![KabinNo] = [tblKabin]![KabinNo] AND K![UgeNr] < [tblKabin]![UgeNr] ORDER BY K![CenterID] DESC, K![KabinNo] DESC, K![UgeNr] DESC) AS tællerværdier
FROM tblKabin;
Avatar billede mugs Novice
24. september 2008 - 20:34 #3
Det fungerer jo perfekt. Har dog modificeret terry's en smule:

SELECT tblKabine.centerid, tblKabine.kabinenr AS Udtryk1, tblKabine.ugenr, tblKabine.total, [tblKabine]![Total]-(SELECT TOP 1 Total from TblKabine K WHERE K![CenterID] = [tblKabine]![CenterID] AND K![KabineNr] = [tblKabine]![KabineNr] AND K![UgeNr] < [tblKabine]![UgeNr] ORDER BY K![CenterID] DESC, K![KabineNr] DESC, K![UgeNr] DESC) AS tællerværdier
FROM tblKabine
ORDER BY tblKabine.kabinenr, tblKabine.ugenr;
Avatar billede hugopedersen Nybegynder
25. september 2008 - 09:41 #4
Har prøvet begge forslag, men de tager simpelthe for lang tid. Og jeg har 8 felter i tabellen jeg skal finde differencen for.
Måske skal jeg ud i en midlertidig tabel og så noget VBA til at oprette records.

(native tabeller ligger på en MySQL server)
Avatar billede terry Ekspert
25. september 2008 - 11:45 #5
Well as far as I can see mugs example is the same as mine but with a sort, so there isnt going to be much perfomance difference between them.

"Og jeg har 8 felter i tabellen jeg skal finde differencen for"
So the differemce isnt just total?

"native tabeller ligger på en MySQL server"
Do you mean the tables are on a MySQL srever? If so then (know very little about MySQL) I would suggest that making a view (query) (if thats possible) on the MySQL Server would go much faster and then make a link to the view from Access.


"Måske skal jeg ud i en midlertidig tabel og så noget VBA til at oprette records."
I'll be very surprised if this will be faster. You would (I think) need to loop through a recordset and for each record find the previous week (for center+cabin) and then insert data into a temp table, but you could give it a try.

Indexs on fields may help.
Avatar billede terry Ekspert
25. september 2008 - 12:19 #6
You could also try making a passthrough query, thats if the tables are on a server (MySQL), but the syntax (SQL) must be MySQL SQL not Access.
Avatar billede hugopedersen Nybegynder
25. september 2008 - 12:37 #7
In my example there is only one 'Total' field but in real life I have 11 fields that I have to calculate the difference from last week to current week
So that is going to be quite a task I know :-)

Terry I have mailed you an image of the structure of the table.

Mugs> hvis du vil se strukturen, så skal jeg bruge en email.
Avatar billede mugs Novice
25. september 2008 - 13:45 #8
Tetty > Korrekt, at jeg blot har indført en sortering.
Hugo > Ikke nødvendigt, dette ovetstiger mit kendskab til SQL.
Avatar billede hugopedersen Nybegynder
26. september 2008 - 09:08 #9
Jeg tror jeg fik den kringlet nu. Det er heldigvis sådan at det er mig selv der har programmeret Delphi programmet der danner data på MySQL (det er et program der konverteret ca. 550 paradox tabeller til MySQL - 3 filer fra hvert af vore solcentre + 8 fælles = 20.000.000 records alt i alt) og derfor var det ikke noget problem at lave et par ekstra felter der indeholder previous week og år (lidt overhead i tabellerne men hastigheden er bedre) og så lave 1 query der bygger på 2 subqueries og resultatet er noget jeg kan bruge i en rapport.
Så tak til Terry for 'showing me the way' once again :-)
Avatar billede terry Ekspert
26. september 2008 - 11:17 #10
Slev tak, og god weekend Hugo og mugs
Avatar billede terry Ekspert
26. september 2008 - 11:17 #11
selv!
Avatar billede mugs Novice
26. september 2008 - 12:52 #12
Tak i lige måde til Jer begge.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester