Avatar billede _k Nybegynder
18. september 2002 - 11:02 Der er 8 kommentarer og
1 løsning

SQL - lidt mere avanceret

Jeg har en spiller-tabel og en scorings-tabel som i revideret udgave ser sådan her ud:

Scoringer:
spillerID = {1,2,1,4,2.....}
KampNR = {1,1,2,2,2.....}
Scoringer ={1, 1, 2, 0, 2...}

Spiller:
ansatID = {1,2,3,4,5....}
Fornavn = {Peter, Anders, Thomas...}
SamletScore = {0,0,0....}

Jeg vil gerne konstruere en SQL-sætning som først løber alle kampe igennem og finder den eller de spillere som sammenlagt har scoret flest mål.
Dernæst skal spillertabellen opdateres, således at topscoreren/topscorerne får nogle point ind på SamletScore (lad os sige 100)

Jeg hælder en del til at benytte SUM til at finde den sammenlagte score for de forskellige spillere, men jeg får en fejlmeddelelse ang. noget "GROUP BY"?

Skal det at finde topscorerne og det at opdater spillertabellen evt. splittes op i 2 selvstændige sætninger?
Avatar billede cyb Nybegynder
18. september 2002 - 11:31 #1
Har du en selvstændig tabel over kampe med kamnr som id ?
Avatar billede _k Nybegynder
18. september 2002 - 11:46 #2
ja, den indeholder oplysninger om hvem der møder hvem. Vil det være e fordel at inddrage den? Til hvad?
Avatar billede cyb Nybegynder
18. september 2002 - 11:49 #3
Ønsker du at finde den spiller der har scoret flest må i hver kamp så kan det gøres således:
A1 - "SELECT MAX(Scoringer) AS MaxScoringer, KampNr FROM Scoringer GROUP BY KampNr"
Hvilket returnere hvilke kampe der er er scoret hvormange mål af den der har scoret flest mål.
A2 - "SELECT SpillerID FROM TBL Scoringer WHERE KampNr = 1 (Her skal kampNummeret stå) AND Scoringer = 2 (Her skal MaxScoringer stå)"
Hvilket returnere alle de spillere der har scoret det pågældende antal mål.
Avatar billede _k Nybegynder
18. september 2002 - 12:06 #4
Det er ikke den enkelte rundes topscorer jeg er ude efter. Det jeg forsæger at finde er den sammenlagte topscorer. Dvs. at jeg ønsker kun at finde den eller de spillere der har MAX-værdien når alle runders kampe er lagt sammen. Hvor mange kasser de har lavet er i denne sammenhæng ligegyldigt.
Avatar billede cyb Nybegynder
18. september 2002 - 12:11 #5
Ja, den er nok ikke så nødvendig .. Tænkte bare på at joine med den ...
Du kan også lave føglende forespørgsel som vil returner alle kampe samt de spillere der har scoret flest mål og hvormange mål:

"SELECT Scoringer.KampNr, Scoringer.SpillerID, Scoringer.Scoringer FROM (SELECT MAX(Scoringer) AS MaxScoringer, KampNr AS ThisKampNr FROM Scoringer GROUP BY KampNr) d, Scoringer WHERE Scoringer.Scoringer = d.MaxScoringer AND Scoringer.KampNr = d.ThisKampNr ORDER BY Scoringer.KampNr, Scoringer.SpillerID"
Avatar billede _k Nybegynder
18. september 2002 - 12:45 #6
Det er vist hvad man kalder for en motherfu.... af en sql-sætning :o) Men jeg tror nu vi er inde på noget af det rigtige....
Er dog lidt i tvivl om hvad du mener med KampNR og ThisKampNR - er det muligt i sql at benytte this? Eller er det i programmeringssproget "udenom" jeg skal finde this? - benytter asp
Avatar billede lasse_buck Nybegynder
18. september 2002 - 13:24 #7
Jeg har brugt en del energi på at kommentere et lignende problem. Tag et kig - det forklarer bl.a. GROUP BY:
http://www.eksperten.dk/spm/259132
Avatar billede cyb Nybegynder
18. september 2002 - 13:29 #8
hvis du anvender den sidste select jeg viste dig så virker det udenom programmeringssprogrameringssproget. Prøv evt. at køre forespørgslen.
Hvis du anvender A2 så skal KampNr og Scoringer sættes ind via programmeringssproget.
Avatar billede _k Nybegynder
19. september 2002 - 15:14 #9
Tak skal i have. Jeg har ikke fulgt nogen af Jeres forslag slavisk, men I har skubbet mig i den rigtige retning :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
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