Avatar billede Calle5463 Forsker
17. oktober 2016 - 18:38 Der er 6 kommentarer

Optælling af records i MySQL-tabeller

Inspiration søges: Jeg har (i stedet for at lave optællingerne hver gang) planer om at lave en lille hjælpe-tabel i mysql (antal), hvor resultaterne af nogle optællinger af antal (ialt og allokerede) enheder opdelt i hoved- og enhedsgrupper. Tallene skal vises som en statusoversigt på en hjemmeside.

Hvd.grp ...... Enh.grp .......Antal ialt ....... Antal ledige
Plads øst .... små ............... 10 ..................1
Plads øst .... store ............... 3 .................. 2

Dvs. jeg tænker der skal laves to separate optællinger (COUNT) med hver sin WHERE (eller skal der det?), og data indsættes i "antal".
Før første indsættelse tænker jeg, at "antal" tømmes for data?
Første indsættelse sker med INSERT og anden med UPDATE?

Eller er det mere ligetil at lave optællingen hver gang siden vises (kan ikke lige se en nem måde at samle og vie data på)?
Avatar billede arne_v Ekspert
17. oktober 2016 - 18:55 #1
2 x COUNT med WHERE kan muligvis laves som 1 x COUNT med GROUP BY.

En tabel med data som er beregnet udfra data i andre tabeller er sjaeldent (sjaeldent <> aldrig) en god ide.

Hvis det laves saa vil man nok helst lave det som et materialized view eller bare et view.

Det er noget mere almindeligt at cache de beregnede vaerdier i applikationen.
Avatar billede Calle5463 Forsker
17. oktober 2016 - 19:09 #2
Et anden måde kunne måske være at lave to felter i enheds-tabellen, det ene sættes permanent til "1" det andet skifter mellem "0" og "1" afhængig af allokering. Så burde det være nemt at lave en COUNT med SUM(permanent) og SUM(allokeret)?
Avatar billede arne_v Ekspert
17. oktober 2016 - 19:26 #3
Det lyder som en simpel og effektiv loesning.
Avatar billede arne_v Ekspert
17. oktober 2016 - 19:26 #4
Men jeg haaber at du har styr paa samtidigheds problemer.

:-)
Avatar billede Calle5463 Forsker
17. oktober 2016 - 19:44 #5
Der er kun en (kassereren, ok, og admin) der kan ændre på allokeringer, så det burde ikke være problematisk med samtidige opdateringer - så hurtige er der ingen af dem der er på tasterne. Men har da i øvrigt tænkt lidt over, om jeg kan indbygge et dobbelttjek der giver admin besked ved ubalance.
Avatar billede arne_v Ekspert
17. oktober 2016 - 20:00 #6
Lyder som om det er noget der kan haandteres manuelt.

Hvis du er interesseret i emnet mere generelt:

http://www.vajhoej.dk/arne/articles/dbconcur.html
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

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