Versio

Selecteren per speler max waarde

Overzicht Reageren

Teun Beijers

Teun Beijers

19/02/2009 16:59:00
Quote Anchor link
Hallo,
Ik heb een tabel in mysql met sectortijden erin(van een race). Het ziet er als volgt uit:
id, trackID, checkID, score, player

Hier is checkID het id van de sector, score is de tijd op deze sector, en player vanzelfsprekend de speler die de tijd heeft neergezet.
Nu wil ik de ranglijst hieruit krijgen, iedere speler kan maar 1x in deze ranglijst voorkomen, maar wel vaker in de tabel. Ik had hiervoor de volgende sql bedacht:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "SELECT checkID,player,MIN(score) AS score FROM checkpoints WHERE trackID = 1 GROUP BY player ORDER BY checkID,id";
?>


Deze pakt echter alleen maar de eerste sector(heb getest in phpmyadmin). Iemand die weet hoe ik 'm alle sectoren kan laten pakken?
 
PHP hulp

PHP hulp

25/05/2012 15:31:01
Gesponsorde koppelingen:
 
Jesper Diovo

Jesper Diovo

19/02/2009 17:04:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT
  DISTINCT player,
  checkID,
  score
FROM
  checkpoints
WHERE
  trackID = 1
ORDER BY
  checkID,id


Zoiets? Overigens is het niet slim om op checkID/id te sorteren. Een id is niets, je kunt beter op velden sorteren waar echt iets in staat waar je iets mee doet.
 
Frank -

Frank -

19/02/2009 17:07:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT
  checkID,player,MIN(score) AS score
FROM checkpoints
WHERE trackID = 1
GROUP BY player
ORDER BY checkID,id

2 kolommen in de SELECT (die niet in een aggregate functie staan) en 1 kolom in de GROUP BY. De query is dus onmogelijk en hoort een dikke foutmelding op te leveren.

Alle kolommen die in de SELECT staan en die niet in een aggragate functie staan, MOETEN (!!!) in de GROUP BY staan.

Dat MySQL hier geen foutmelding op geeft, zegt veel over de kwaliteit van MySQL. Het is wiskundige onzin en hoort dus een foutmelding op te leveren.
 
Teun Beijers

Teun Beijers

19/02/2009 17:10:00
Quote Anchor link
Die query van jou werkt niet. Distinct had iets tegen meer dan 1 of 2 dingen selecten ofzo. Was ik al eerder achtergekomen, spelers komen nu in ieder geval meer dan 1x terug per sector

@frank: ja, ik heb mysql niet gemaakt hè :P
Gewijzigd op 01/01/1970 01:00:00 door Teun Beijers
 



Overzicht Reageren