Avatar billede ronja7 Nybegynder
17. november 2002 - 16:09 Der er 10 kommentarer og
1 løsning

Distinct Sum

Hej - jeg har en tabel som fungerer som en relation mellem to andre. Nu vil jeg så tælle en af kollonnerne sammen, men problemet er at jeg kun skal bruge een række ud af de nogen gange 100 rækker som repræsenterer den samme pointindgang. hmmm...

Jeg har prøvet noget lignende dette:

SELECT DISTINCT p.statsID, sp.Klub, sp.spillerfornavn, sp.spillerefternavn, sp.spillerid, Sum(p.points) as summen FROM points2002 p, spillere2002 sp Where sp.spillerID = p.spillerID Group By sp.spillerID, p.statsID, p.kamp ORDER BY summen DESC LIMIT 0,10

Det er noget rod der kommer ud her, men burde Distinct ikke sørge for at en række med samme statsID ikke kommer med mere end een gang?

Rune
Avatar billede proaccess Nybegynder
17. november 2002 - 16:26 #1
Du skal vist bare undlade at gruppere på (og medtage) statsID...

SELECT DISTINCT sp.Klub, sp.spillerfornavn, sp.spillerefternavn, sp.spillerid, Sum(p.points) as summen FROM points2002 p, spillere2002 sp Where sp.spillerID = p.spillerID Group By sp.spillerID, p.kamp ORDER BY summen DESC LIMIT 0,10
Avatar billede ronja7 Nybegynder
17. november 2002 - 17:26 #2
Det giver heller ikke det rigtige.. problemet er her at kamp hænger sammen med statsID.
Avatar billede nemeier Nybegynder
18. november 2002 - 14:43 #3
SELECT DISTINCT sp.Klub, sp.spillerfornavn, sp.spillerefternavn, sp.spillerid, Sum(p.points) AS summen
  FROM points2002 AS p, spillere2002 AS sp
  WHERE sp.spillerID = p.spillerID
  GROUP BY sp.Klub, sp.spillerfornavn, sp.spillerefternavn, sp.spillerid
  ORDER BY summen DESC LIMIT 0,10

Jeg vil tro at dette vil gøre som du vil ha' den til
Avatar billede nemeier Nybegynder
18. november 2002 - 14:43 #4
Skulle ha været et svar
Avatar billede ronja7 Nybegynder
18. november 2002 - 23:00 #5
Heller ikke...
Avatar billede nemeier Nybegynder
18. november 2002 - 23:04 #6
Prøv at lave en skitse over hvad du vil ha' udskrevet, samt i hvilken rækkefølge disse skal udskrives ?
Avatar billede ronja7 Nybegynder
18. november 2002 - 23:10 #7
Points2002 består af en masse rækker hvor ID er det eneste unikke. Hver række repræsenterer en forbindelse mellem en statistik-tabel og et drømmehold. Nu er det så min intention at trække een række ud for hver statistik/kamp (der findes een statistik for hver kamp spilleren har deltaget i, men op til 300 hvis alle har spilleren på deres drømmehold) og derefter summere dem på spilleren(spillerID). Til sidst skal jeg så kun bruge de ti spillere som har tjent flest points.

Simpelt...? Ellers sig til igen.
Avatar billede nemeier Nybegynder
19. november 2002 - 07:02 #8
Prøv lige at fjerne DISTINCT fra min forespørgsel og køre den igen. For du overhovedet noget tilbage ? Hvis JA, hvad ?
Avatar billede ronja7 Nybegynder
19. november 2002 - 19:45 #9
SELECT p.statsID, sp.spillerid, sp.Klub, sp.spillerfornavn, sp.spillerefternavn, Sum(p.points) AS summen FROM points2002 AS p, spillere2002 AS sp WHERE sp.spillerID = p.spillerID GROUP BY p.statsID, sp.spillerid ORDER BY summen DESC LIMIT 0,10

Denne her, med og uden DISTINCT, giver mig en summering på alle instanser i points2002 - altså det rigtige bortset fra at alle medtages. Hvordan får jeg den nu til kun at tage hver statsID med een gang?
Avatar billede ronja7 Nybegynder
19. november 2002 - 20:00 #10
SELECT DISTINCT p.statsid, p.spillerID,Sum(p.points) AS summen FROM points2002 AS p GROUP BY p.spillerid ORDER BY summen DESC LIMIT 0,10

Lidt forenklet udgave hvor spillertabellen udelades. Jeg får her en total på alle forekomster i points2002 summeret på spillerID.

Jeg troede ærligt talt at distinct sørgede for at hver statsID kun blev medtaget een gang? Håbløst....
Avatar billede ronja7 Nybegynder
11. august 2003 - 15:50 #11
asp er håbløst..
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
Computerworld tilbyder specialiserede kurser i database-management

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