20. februar 2006 - 14:49Der 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.
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.
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å.
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) ... )
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.
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;
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;
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.
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.