Avatar billede kryster Nybegynder
12. februar 2003 - 11:52 Der er 11 kommentarer og
1 løsning

udregning i SELECT

Jeg har denne tabel til et point regnskab
CREATE TABLE drivers_champ (
  id int(11) unsigned NOT NULL auto_increment,
  memberid mediumint(5) unsigned NOT NULL default '0',
  point int(4) unsigned default NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;

Med følgende indhold
id | memberid | point

1 | 14 | 20
2 | 10 | 19
3 | 06 | 18
4 | 45 | 17
5 | 10 | 20
6 | 06 | 19
7 | 45 | 18
8 | 14 | 17

Er det muligt at lave en SELECT der regnet point samme de steder hvor memberid er ens og så sortere efter point DESC.
Så resultatet kommer til at se sådan ud.
Eller skal jeg laver en select for hver member id og gemme resultatet i et array og sortere på det bagefter?

memberid | point

10 | 49
06 | 37
14 | 37
45 | 35

Det har ingen betydning hvordan 2 ens resultater bliver sorteret (06 og 14)
Avatar billede erikjacobsen Ekspert
12. februar 2003 - 11:57 #1
Vistnok

select memberid,sum(point) as points from drivers_champ group by memberid order by points desc
Avatar billede proaccess Nybegynder
12. februar 2003 - 12:21 #2
>Erik: du vil da absolut ikke have pro-abonnementer... nu "krydrer" du endda dine svar med "Vistnok" - Det er jo fuldstændigt rigtigt, og du ved det jo !!!
Avatar billede erikjacobsen Ekspert
12. februar 2003 - 12:39 #3
Kan du ikke lade være med at spamme andre folks spørgsmål. proaccess ??
Avatar billede kryster Nybegynder
12. februar 2003 - 12:44 #4
Jep helt perfekt.
Ved du om det så er muligt at finde ud af hvilken placering et memberid har i listen?
Hvis jeg på memberid 45's profil sidé gerne vil vise at han ligger nr 4, kan det gøres med en SQL.
Avatar billede erikjacobsen Ekspert
12. februar 2003 - 12:51 #5
Du kan vistnok noget i denne retning:

1) Først finde ud af hvor mange point 45 har

select sum(point) as points from drivers_champ where memberid=45 group by memberid

2) Dernæst med tallet i hånden (35) så

select memberid,sum(point) as points from drivers_champ group by memberid where points>35

og tælle antal rækker der kommer retur. Hans placering er dette antal plus 1.

Det er ikke særlig effektivt. Måske man skulle lave en samlet beregning
en gang i timen, eller ved hver opdatering af points?
Avatar billede kryster Nybegynder
12. februar 2003 - 13:01 #6
Tak for hjælpen.
Det var også hvad jeg var kommet frem til at det ikke kunne laves i en query.
Lav et svar hvis du vil have point.
Avatar billede erikjacobsen Ekspert
12. februar 2003 - 13:41 #7
Nej tak, ingen point til mig (for tiden...)
Avatar billede kryster Nybegynder
12. februar 2003 - 13:45 #8
Ok, det ser heller ikke ud til du kommer til at mangle dem ;-)
Avatar billede eky Nybegynder
13. februar 2003 - 13:44 #9
Hvordan laver I sammentællingen, så memberid 10 får 49 points;-))
Avatar billede kryster Nybegynder
13. februar 2003 - 14:00 #10
Læs det første svar fra erikjacobsen
select memberid,sum(point) as points from drivers_champ group by memberid order by points desc

Jeg har kombineret det med INNER Join i PHP
$select_drivers = mysql_query("SELECT drivers_champ.memberid, drivers_champ.point, members.id, members.div_team, members.navn, liga_team.chassisid FROM drivers_champ INNER JOIN members ON drivers_champ.memberid = members.id INNER JOIN liga_team ON members.div_team = liga_team.id WHERE drivers_champ.eventid=".$event." AND liga_team.chassisid=".$rowchassis["id"]." ORDER BY drivers_champ.point DESC");
Avatar billede kryster Nybegynder
13. februar 2003 - 14:02 #11
ups det var den uden sum
$sql_select = mysql_query("SELECT teams_champ.teamid, SUM(teams_champ.point) AS points, liga_team.team_navn FROM teams_champ INNER JOIN liga_team ON teams_champ.teamid = liga_team.id WHERE liga='".$liga."' AND season=".$season." GROUP BY teamid ORDER BY points DESC")
Avatar billede kryster Nybegynder
04. marts 2003 - 15:14 #12
tager selv point tilbage så
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