Avatar billede preuss Nybegynder
28. juli 2005 - 12:25 Der er 12 kommentarer og
1 løsning

Sortere efter SUM()

Jeg er ved at lave et turneringssystem, hvor folk bla. spiller i par, dette gør at jeg skal lave en "stillings-liste" over par,
i databasen har jeg navn, parnr og total (for den enkelte),
jeg skal derfor lave en list over hvad hvert par har lavet, og sortere dem efter parrets total. Hvordan kan det lade sig gøre?

Er lidt i tvivl om det egentlig skulle have været i PHP det her spørgsmål og håber det er forklaret tydeligt nok.
Avatar billede busschou Praktikant
28. juli 2005 - 12:29 #1
hvis du allerede har totalen i databasen så er det vel bare
Select * From tabel Order By total
Avatar billede arne_v Ekspert
28. juli 2005 - 12:30 #2
SQL'en må vel være noget a la:

SELECT parnr,navn,SUM(point) FROM tabel GROUP BY parnr,navn
Avatar billede preuss Nybegynder
28. juli 2005 - 13:34 #3
Måske, skrev jeg det ikke tydeligt nok, jeg har
Den enkeltes resultat i databasen, men ikke parrets resultat.
ex på DB

ID      Navn        Parnr          Resultat
1        Person A        1                500
2        Person B        1                50
3          Person C        2                10
4          Person D        2                  90

Listen bør altså se således ud;
Par                                            Total
Person A    500  Person B      50              550
Person C      10  Person D      90              100

Altså en liste sorteret efter deres samlede resultat
Avatar billede busschou Praktikant
28. juli 2005 - 13:37 #4
Så ville jeg hente dem alle ud sorteret på par
Select * From tabel Order By parnr
og så ville jeg i min løkke med udtrækket sørge for at tage summen
Da hvert par består af to personer kan man jo tjekke på modulo 2 :o)
Avatar billede busschou Praktikant
28. juli 2005 - 13:37 #5
ak glem det sorry, den skal selvfølgelig sortere på totalen,, hm
Avatar billede arne_v Ekspert
28. juli 2005 - 13:49 #6
prøv:

SELECT p1.navn,p1.resultat,p2.navn,p2.resultat,p1.resultat+p2.resultat
FROM persontabel p1,persontabel p2
WHERE p1.parnr=p2.parnr AND p1.id<p2.id
ORDER BY p1.resultat+p2.resultat DESC
Avatar billede preuss Nybegynder
28. juli 2005 - 14:06 #7
arne v:

Det virker en lille smule uoverskueligt for mig :-p,
når der er knap 100 par, eller er det bar mig ?
Avatar billede arne_v Ekspert
28. juli 2005 - 14:08 #8
den burde kun returnere en række per par - får du flere ?
Avatar billede preuss Nybegynder
28. juli 2005 - 14:52 #9
Nej, har ikke prøvet endnu...skal nok undlade at kommentere det mere så, før jeg kommer hjem og får det testet :-)

Det virkede bare umiddelbart på mig, som om det det ovenstående kun kunne bruges ved 2 par, men jeg har nok bare læst det forkert
Avatar billede preuss Nybegynder
28. juli 2005 - 19:10 #10
Nu er jeg jo desværre ikke nogen ørn, til mySQL, kunne du evt oversætte det til min db ?
Tabellen hedder "staevne"
kolonnerne hedder:
- id
- navn
- par_nr
- total
På forhånd tak :-)
Avatar billede arne_v Ekspert
28. juli 2005 - 19:13 #11
prøv:

SELECT p1.navn,p1.total,p2.navn,p2.total,p1.total+p2.total
FROM staevne p1,staevne p2
WHERE p1.par_nr=p2.par_nr AND p1.id<p2.id
ORDER BY p1.total+p_2.total DESC
Avatar billede preuss Nybegynder
28. juli 2005 - 19:22 #12
Lige præcis hvad jeg skulle bruge :-)
Mange tak, smid et svar så du kan få dine point
Avatar billede arne_v Ekspert
28. juli 2005 - 19:32 #13
svar
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