Alles 1x weergeven
SomaQan - 04/08/2009 16:28
PHP 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
Abbas - 04/08/2009 16:33 (laatste wijziging 04/08/2009 16:33)
Crew .NET
Iets in de trend van:
SELECT SUM(punten) FROM spelers ORDER BY naam
SELECT SUM( punten) FROM spelers ORDER BY naam
?
Ben geen SQL-expert maar ik denk dat dit al in de goede richting is...
vinTage - 04/08/2009 16:36
Nieuw lid
"select distinct speler from tabel"
"select distinct speler from tabel"
floker - 04/08/2009 16:39
Nieuw lid
probeer dit eens :
SELECT naam, sum(punten)
FROM naamvanuwtabel
GROUP BY naam, sum(punten)
vinTage - 04/08/2009 16:39 (laatste wijziging 04/08/2009 16:52)
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
SELECT DISTINCT speler, sum( punten) FROM tabel
SELECT DISTINCT speler, sum( punten) FROM tabel
Gerard - 04/08/2009 17:45
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.
djb - 04/08/2009 18:21
PHP beginner
maybe iets in de richting van:
SELECT `naam`,SUM(`punten`) FROM `spelers` GROUP BY `naam`
SELECT `naam` , SUM( `punten` ) FROM `spelers` GROUP BY `naam`
En die sql export is idd wel ff handig in dat soort gevallen
SomaQan - 04/08/2009 18:29 (laatste wijziging 04/08/2009 18:55)
PHP beginner
Ik heb er dit van gemaakt.
$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());
$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.
CREATE TABLE `gesimuleerd` (
`id` int(10) unsigned NOT NULL auto_increment,
`cijfer` int(11) NOT NULL default '0',
`toeschouwers` int(11) NOT NULL default '0',
`team_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;
CREATE TABLE `gesimuleerd` (
`id` int( 10 ) unsigned NOT NULL auto_increment,
`cijfer` int( 11 ) NOT NULL default '0' ,
`toeschouwers` int( 11 ) NOT NULL default '0' ,
`team_id` int( 11 ) NOT NULL default '0' ,
) ENGINE= MyISAM DEFAULT CHARSET= latin1 AUTO_INCREMENT= 0 ;
Gerard - 04/08/2009 18:38
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.
SomaQan - 04/08/2009 18:55
PHP beginner
Ik heb me post gewijzigd zie boven.
djb - 05/08/2009 06:03
PHP beginner
SELECT `team_id` , SUM( `cijfer` ) , SUM( `toeschouwers` )
FROM `gesimuleerd`
GROUP BY `team_id`
LIMIT 0 , 30
SELECT `team_id` , SUM( `cijfer` ) , SUM( `toeschouwers` )
FROM `gesimuleerd`
GROUP BY `team_id`
LIMIT 0 , 30
Heb ik, en dit is mijn database export:
CREATE TABLE IF NOT EXISTS `gesimuleerd` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cijfer` int(11) NOT NULL DEFAULT '0',
`toeschouwers` int(11) NOT NULL DEFAULT '0',
`team_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
INSERT INTO `gesimuleerd` (`id`, `cijfer`, `toeschouwers`, `team_id`) VALUES
(1, 4, 2, 1),
(2, 3, 4, 1),
(3, 1, 3, 2),
(4, 3, 2, 2);
CREATE TABLE IF NOT EXISTS `gesimuleerd` (
`id` int( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`cijfer` int( 11 ) NOT NULL DEFAULT '0' ,
`toeschouwers` int( 11 ) NOT NULL DEFAULT '0' ,
`team_id` int( 11 ) NOT NULL DEFAULT '0' ,
PRIMARY KEY ( `id` )
) ENGINE= MyISAM DEFAULT CHARSET= latin1 AUTO_INCREMENT = 5 ;
INSERT INTO `gesimuleerd` ( `id` , `cijfer` , `toeschouwers` , `team_id` ) VALUES
( 1 , 4 , 2 , 1 ) ,
( 2 , 3 , 4 , 1 ) ,
( 3 , 1 , 3 , 2 ) ,
( 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
SomaQan - 09/08/2009 21:13
PHP beginner
$sql = mysql_query("SELECT DISTINCT `team_id` , `cijfer` , SUM( `cijfer` ) , SUM( `toeschouwers` )
FROM `gesimuleerd`
GROUP BY `team_id`
LIMIT $van, $tot")or die(mysql_error());
$sql = mysql_query ( "SELECT DISTINCT `team_id` , `cijfer` , SUM( `cijfer` ) , SUM( `toeschouwers` ) FROM `gesimuleerd`
GROUP BY `team_id`
$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!
djb - 10/08/2009 00:30
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
Gesponsorde links
Dit onderwerp is gesloten .