Avatar billede leasing Nybegynder
20. februar 2006 - 14:49 Der er 13 kommentarer og
1 løsning

Summering af point

Jeg har en forespørgsel som ser således ud i SQL:

SELECT HOLDNAVNE.holdnavn, Sum(POINTS.point) AS SumOfpoint, POINTS.rundeNr, HOLDNAVNE.autoID
FROM POINTS INNER JOIN (HOLDNAVNE INNER JOIN holdspillere ON HOLDNAVNE.autoID = holdspillere.autoID) ON POINTS.spillerID = holdspillere.spillerID
WHERE (((POINTS.rundeNr)>=[holdspillere].[holdrundenr] And (POINTS.rundeNr)<=[holdspillere].[tilrundenr]))
GROUP BY HOLDNAVNE.holdnavn, POINTS.rundeNr, HOLDNAVNE.autoID;

Denne forespørgsel summere alle holdenes point. Nu er det sådan at når man solger og køber spillere skal man betale gebyr. Dette gebyr skulle jo så gerne fratrækkes i summeringen således at forespørgslen laver det rigtige udtræk i stigende orden.

Jeg har derfor lavet en ny tabel ved navn GEBYR hvor der er disse feltet:
gebyrID
autoID = holdets ID
gebyr
rundenr = hvilken runde der er købt eller solgt spillere

Håber der er nogen der kan komme med de kloge ord. Mangler der noget information...så sig endelig til.
Avatar billede jensen363 Forsker
20. februar 2006 - 15:17 #1
Du kan relatere gebyret til pointsummerner ved hjælp af autoID og rundenr
Avatar billede leasing Nybegynder
20. februar 2006 - 15:22 #2
Jaaa...det har jeg også prøvet, men det virker ikke så optimalt. Er der et hold som ikke har solgt eller købt spillere vil disse hold ikke blive vist i forespørgslen...og der er jo ikke så godt.
Avatar billede jensen363 Forsker
20. februar 2006 - 15:27 #3
Så kan du vælge at benytte LEFT/RIGHT JOIN for at medtage alle resultater fra dine holdoplysninger
Avatar billede leasing Nybegynder
20. februar 2006 - 15:36 #4
Okay...det virkede fint. Når jeg nu i feltet POINT laver en Sum kan jeg så få feltet GEBYR trukket fra det samlede antal point...og hvordan gøres dette?
Håber lige du har guldkornet til denne også.
Avatar billede jensen363 Forsker
20. februar 2006 - 15:39 #5
Du kan godt lave en update som fratrækker gebyr, men måske er det bedre at lave en ny sum hvor du fratrækker gebyr fra point ( så slipper du for at være i tvivl om, du nu har kørt den update som fratrækker gebyr :o) ... )
Avatar billede leasing Nybegynder
20. februar 2006 - 15:45 #6
...og hvordan laver jeg den update hvor der også fratrækkes gebyr fra?
Avatar billede jensen363 Forsker
20. februar 2006 - 15:47 #7
Hvordan ser din sidste forespørgsel ud ?
Avatar billede leasing Nybegynder
20. februar 2006 - 15:50 #8
Den således ud:

SELECT HOLDNAVNE.holdnavn, Sum(POINTS.point) AS SumOfpoint, POINTS.rundeNr, HOLDNAVNE.autoID, GEBYR.gebyr
FROM GEBYR RIGHT JOIN (POINTS INNER JOIN (HOLDNAVNE INNER JOIN holdspillere ON HOLDNAVNE.autoID = holdspillere.autoID) ON POINTS.spillerID = holdspillere.spillerID) ON GEBYR.autoID = HOLDNAVNE.autoID
WHERE (((POINTS.rundeNr)>=[holdspillere].[holdrundenr] And (POINTS.rundeNr)<=[holdspillere].[tilrundenr]))
GROUP BY HOLDNAVNE.holdnavn, POINTS.rundeNr, HOLDNAVNE.autoID, GEBYR.gebyr;

Det eneste der er til forskel fra den første er at feltet GEBYR fra tabellen GEBYR er kommet på. Beløbet fra GEBYR skulle så gerne trækkes fra summeringen af POINTS. Hvis det kan laves i et nyt felt er det at foretrække.
Avatar billede jensen363 Forsker
20. februar 2006 - 15:58 #9
Ikke testet ... virker dette :

SELECT HOLDNAVNE.holdnavn, (Sum(POINTS.point)-GEBYR.gebyr) AS SumOfpoint, POINTS.rundeNr, HOLDNAVNE.autoID, GEBYR.gebyr
FROM GEBYR RIGHT JOIN (POINTS INNER JOIN (HOLDNAVNE INNER JOIN holdspillere ON HOLDNAVNE.autoID = holdspillere.autoID) ON POINTS.spillerID = holdspillere.spillerID) ON GEBYR.autoID = HOLDNAVNE.autoID
WHERE (((POINTS.rundeNr)>=[holdspillere].[holdrundenr] And (POINTS.rundeNr)<=[holdspillere].[tilrundenr]))
GROUP BY HOLDNAVNE.holdnavn, POINTS.rundeNr, HOLDNAVNE.autoID, GEBYR.gebyr;
Avatar billede jensen363 Forsker
20. februar 2006 - 16:00 #10
Eller :

SELECT HOLDNAVNE.holdnavn, Sum(POINTS.point) AS PointA, (Sum(POINTS.point)-GEBYR.gebyr) AS PointB, POINTS.rundeNr, HOLDNAVNE.autoID, GEBYR.gebyr
FROM GEBYR RIGHT JOIN (POINTS INNER JOIN (HOLDNAVNE INNER JOIN holdspillere ON HOLDNAVNE.autoID = holdspillere.autoID) ON POINTS.spillerID = holdspillere.spillerID) ON GEBYR.autoID = HOLDNAVNE.autoID
WHERE (((POINTS.rundeNr)>=[holdspillere].[holdrundenr] And (POINTS.rundeNr)<=[holdspillere].[tilrundenr]))
GROUP BY HOLDNAVNE.holdnavn, POINTS.rundeNr, HOLDNAVNE.autoID, GEBYR.gebyr;
Avatar billede leasing Nybegynder
20. februar 2006 - 16:00 #11
Jeg skal lige ud af hente min søn...så jeg tester i aften. Håber du er online i aften.
Avatar billede jensen363 Forsker
20. februar 2006 - 16:02 #12
Alternativt ... kan du zippe databasen og maile den til mig ?
Avatar billede leasing Nybegynder
03. marts 2006 - 14:23 #13
hej igen...lidt forsinket, men jeg havde faktisk glemt jeg havde et åbent spørgsmål. Din hjælp har gjort at det bare funker så det er perfekt.
Vil du svare så du kan få point.
Avatar billede jensen363 Forsker
06. marts 2006 - 08:18 #14
Svar :o)
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