login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Alles 1x weergeven

Offline SomaQan - 04/08/2009 16:28
Avatar van SomaQanPHP beginner Ik heb een mysql table met gegevens van spelers der in,
en van die gegevens wil ik nu een ranglijst maken.

Alleen het probleem is dat er meerdere keren een naam voor kan komen in het table hoe kan ik alles netje weergeven dus 1x de naam 1x de punten etc etc.

De punten moeten wel bij elkaar opgeteld worden eerst en dan pas 1x weergeven.

Weet iemand hoe ik dit kan doen ?

Bedankt alvast!

14 antwoorden

Gesponsorde links
Offline Abbas - 04/08/2009 16:33 (laatste wijziging 04/08/2009 16:33)
Avatar van Abbas Gouden medaille

Crew .NET
Iets in de trend van:

  1. SELECT SUM(punten) FROM spelers ORDER BY naam

?

Ben geen SQL-expert maar ik denk dat dit al in de goede richting is... 
Offline vinTage - 04/08/2009 16:36
Avatar van vinTage Nieuw lid
  1. "select distinct speler from tabel"
Offline Abbas - 04/08/2009 16:37
Avatar van Abbas Gouden medaille

Crew .NET
vinTage, de punten moeten wel opgeteld worden en per speler worden weergegeven. Ik denk niet dat dat met jouw query gaat gebeuren? 
Offline floker - 04/08/2009 16:39
Avatar van floker Nieuw lid probeer dit eens :

SELECT naam, sum(punten)
FROM naamvanuwtabel
GROUP BY naam, sum(punten)
Offline vinTage - 04/08/2009 16:39 (laatste wijziging 04/08/2009 16:52)
Avatar van vinTage Nieuw lid @titjes
Bij jouw query staan er nog steeds zelfde spelers in de lijst.

Met distinct selecteer je iig die speler maar 1 keer, hij moet alleen de query nog wat uitwerken  

edit

  1. SELECT DISTINCT speler, sum( punten) FROM tabel
Offline Gerard - 04/08/2009 17:45
Avatar van Gerard Ouwe rakker Kan je eens een SQL export geven (vanuit phpMyAdmin oid), zodat het wat duidelijker is hoe je tabellen in elkaar steken en hoe je data eruit ziet. Op deze manier kunnen bovenstaande heren je ook beter helpen.
Offline djb - 04/08/2009 18:21
Avatar van djb PHP beginner maybe iets in de richting van:

  1. SELECT `naam`,SUM(`punten`) FROM `spelers` GROUP BY `naam`


En die sql export is idd wel ff handig in dat soort gevallen  
Offline SomaQan - 04/08/2009 18:29 (laatste wijziging 04/08/2009 18:55)
Avatar van SomaQan PHP beginner Ik heb er dit van gemaakt.
  1. $sql = mysql_query("SELECT DISTINCT cijfer,toeschouwers,team_id,sum(cijfer),sum(toeschouwers) FROM gesimuleerd GROUP BY team_id LIMIT $van, $tot")or die(mysql_error());


Hij geeft de naam wel goed weer dus gewoon 1x, alleen de toeschouwers en cijfers kloppen niet.

Iemand die mij kan helpen ?

Danku alvast!  

EDIT: 18:41

@Gerrard
Hier mijn table.
  1. CREATE TABLE `gesimuleerd` (
  2. `id` int(10) unsigned NOT NULL auto_increment,
  3. `cijfer` int(11) NOT NULL default '0',
  4. `toeschouwers` int(11) NOT NULL default '0',
  5. `team_id` int(11) NOT NULL default '0',
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;
Offline Gerard - 04/08/2009 18:38
Avatar van Gerard Ouwe rakker distinct op zoveel kolommen zorgt ervoor dat hij de combinatie van die kolommen als één unieke waarde gaat zien, wat het altijd dus wel is.

Gooi eens een .sql online zodat ik straks wat kan proberen.
Offline SomaQan - 04/08/2009 18:55
Avatar van SomaQan PHP beginner Ik heb me post gewijzigd zie boven.
Offline djb - 05/08/2009 06:03
Avatar van djb PHP beginner
  1. SELECT `team_id` , SUM( `cijfer` ) , SUM( `toeschouwers` )
  2. FROM `gesimuleerd`
  3. GROUP BY `team_id`
  4. LIMIT 0 , 30

Heb ik, en dit is mijn database export:
  1. CREATE TABLE IF NOT EXISTS `gesimuleerd` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `cijfer` int(11) NOT NULL DEFAULT '0',
  4. `toeschouwers` int(11) NOT NULL DEFAULT '0',
  5. `team_id` int(11) NOT NULL DEFAULT '0',
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
  8.  
  9. INSERT INTO `gesimuleerd` (`id`, `cijfer`, `toeschouwers`, `team_id`) VALUES
  10. (1, 4, 2, 1),
  11. (2, 3, 4, 1),
  12. (3, 1, 3, 2),
  13. (4, 3, 2, 2);

Output:
team_id SUM(`cijfer`) SUM(`toeschouwers`)
1 7 6
2 4 5

Als dit niet klopt, kan je dan ook een export geven van de records in de tabel?

Greets, Jeroen
Offline SomaQan - 09/08/2009 21:13
Avatar van SomaQan PHP beginner
  1. $sql = mysql_query("SELECT DISTINCT `team_id` , `cijfer` , SUM( `cijfer` ) , SUM( `toeschouwers` )
  2. FROM `gesimuleerd`
  3. GROUP BY `team_id`
  4. LIMIT $van, $tot")or die(mysql_error());


$van en $tot horen bij mijn navigatiesysteem alleen is daar nu ook een probleem ontstaan.

Omdat een gebruiker meerdere malen voorkomt maakt hij te veel pagina's aan terwijl er in werkelijkheid maar 2 gebruikers zijn.

Hoe los ik dit op heb al DISTINCT geprobeerd

Alvast Bedankt!
Offline djb - 10/08/2009 00:30
Avatar van djb PHP beginner Heey SomaQan,

Kan je niet beter een database export doen en die aan ons geven?
Dan kunnen we het meteen met die database proberen, en zo beter testen.

Offtopic,
LIMIT $van, $tot klopt niet 

de eerste waarde van limit is de rij van waneer je start, en de 2e rij is hoeveel records hij moet geven,

Stel je hebt LIMIT 0,10
Dit geeft record 0 t/m 10

LIMIT 10,10
dit geeft record 10 t/m 20

LIMIT 120, 10
geeft record 120 t/m 130

Dus die 2e waarde is geen "tot" maar eerder "aantal rijen"  

Greets, Jeroen
Offline SomaQan - 11/08/2009 21:13
Avatar van SomaQan PHP beginner Bedankt @djb opgelost dankzij jou bericht hier boven.

 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.226s