goeden dag,

Met mijn beperkte mogelijkheden qua php loop ik tegen ghet volgende probleem aan.

In mijn database staan nu 6 records van 3 verschillende spelers twee verschillende speeldata:

03-09-2014 en 10-09-2014 met mijn onderstaande query krijg ik de resultaten van 03-09-2014 waar ik om begrijpelijke redenen de laatste data zou willen zien.
Ik heb het geprobeerd met een WHERE clausule maar dan werkt de SUM niet meer.

<?php
include("connect.php");

$query = "SELECT spelerid, speler, punten, marsen"
."SUM(punten) AS totpunten, SUM(marsen) AS totmarsen "
."FROM klaverjassen GROUP BY spelerid ORDER BY totpunten DESC ";

$result = mysql_query($query) or die(mysql_error());


while ($row = mysql_fetch_array($result)) {



?>

En even verder op:

<?
}
?>

Iemand een oplossing???

Alvast bedankt.
Ik zie nergens een ORDER BY datum o.i.d.
Je sorteert op totpunten, maar wilt op datum sorteren.

Het lijkt me handig om dan op datum te sorteren.

Daarnaast klopt je GROUP BY niet: ALLE kolommen die niet een aggregtie functie zijn, moeten daar staan.

http://wiki.pfz.nl/group-by

dus:


SELECT spelerid, speler, punten, marsen,
       SUM(punten) AS totpunten, 
       SUM(marsen) AS totmarsen 
FROM klaverjasssen
WHERE .....
GROUP BY spelerid, speler, punten, marsen
ORDER BY .....


Je haalt hierbij geen datum op, dus misschien is dat ook handig om erbij te tonen.


Klopt ik sorteer op totpunten omdat ik daarmee de hoogste score als eerste krijg (ranglijst).
Met de WHERE clausule telt SUM alleen de waarde binnen de WHERE op, en ik wil dat hij alle "punten" optelt.

Ik ga hiermee aan de slag je hoort het van me.

Alvast bedankt.


[size=xsmall]Toevoeging op 19/08/2014 10:01:32:[/size]

Zoals ik al vertelde werkt dat ook niet ik krijg hiermee deze uit komst:
Punten vw marsen v.w. totpunten totmarsen
45 1 45 1
32 1 32 1
21 1 21 1


De totpunten zouden respectievelijk 55, 52 en 51 moeten zijn als het resutaalt van SUM(punten).
Verder krijg ik nu wel de laatste records van 10-09-2014.




[size=xsmall]Toevoeging op 19/08/2014 10:15:48:[/size]

wellicht handig om het verschil te zien

Met WHERE:

http://www.bckamperduin.nl/Klaverjassen/klaverjas.php

zonder WHERE

http://www.bckamperduin.nl/Klaverjassen/klaverjas2.php
Je kunt ook op meerdere dingen sorteren, bijvoorbeeld eerst op 'factor_a' en daarna 'factor_b'.

[code]
ORDER BY
factor_a DESC,
factor_b ASC
Maakt helaas gen enkel verschil
misschien kun je aangeven wat er in je database zit en wat je wilt zien en wat je tot nu toe met je query te zien krijgt.

en dan liefst onder elkaar en niet op 2 andere pagina's onderbrengen.
Oke zal ik proberen.
Het idee is een "simpele" webbassed applicatie voor onze klaverjasclub, tot op heden kreeg ik per email de uitslagen en die zette ik dan op onze website.
Dat ging natuurlijk geregeld de mist in dus vandaar.
De klaverjasclub speelt wekelijks van september tot april ofzo.

wat ik nu heb is een invulformulier waarin wekelijks per speler de behaalde punten en marsen worden ingevoerd.
Die moeten dan compleet opgeteld, worden weer gegeven in klaverjas.php, dus de totaal behaalde punten en marsen dat optellen doe ik met SUM alle behaalde "punten" van betreffende speler.
Mijn database bevat de volgende tabellen:

Spelers - met de namen van de spelers en een ID
speeldata - met alle speeldagen en een ID

Deze worden gebruikt voor dropdown in het invulformulier

Klaverjassen - de eigelijke opslag met de volgende velden
Kl_ID
Speeldata
Spelerid
Speler
Punten
Marsen
Totpunten
Totmarsen

Nu ben ik lang bezig geweest om in de afhandeling van het formulier de punten op te tellen bij tot punten maar dat kreeg ik niet voor elkaar.
De punten werden opgeteld bij het vorige record van de speler:
dus:

week 1 ID 1 behaalde speler a 20 punten en 1 mars dat ging prima bij totpunten 20 en bij totmarsen 1
week 2 ID 2 behaalde speler a 40 punten en 2 marsen en dat werd opgeteld bij het record met ID 1

Wat ik wil is de meest recent gespeelde partijen, met de laatst behaalde (ingevoerde) punten en marsen.
En bij totpunten de totaal behaalde punten en bij tomarsen de totaal behaalde marsen.

ik hoop dat het zo een beetje duidelijk is.

[size=xsmall]Toevoeging op 19/08/2014 11:33:30:[/size]

Sorry voor het extra bericht, maar ik ben natuurlijk ondertussen lekker aan het rommelen in klaverjas.php

dus nog een keer zonder WHERE:

http://www.bckamperduin.nl/Klaverjassen/klaverjas2.php

Met WHERE:

http://www.bckamperduin.nl/Klaverjassen/klaverjas3.php
ik bedoel eigenlijk:

geef onderelkaar een tabelletje met de waarden in de database
en een tabelletje waar je aangeeft wat je dan wilt verkrijgen.

Dat werkt in elk geval voor mij 100x duidelijker dan een heel verhaal.

En voor de (database)programmeur moet het niet nodig zijn om te begrijpen wat een applicatie doet, maar wel "wat staat erin" en "hoe moet het resultaat eruit zien".

oke

in de tabel klaverjassen zit deze data:

ID: 1, 2, 3, 4, 5, 6
speeeldata: 2014-09-03, 2014-09-10
spelerid: 1, 2, 3, 3, 2, 1
speler: speler a, speler b, speler c, speler c, speler b, speler a
punten: 10, 20, 30, 21, 32, 45
marsen: 1, 2, 3, 1, 1, 1
totpunten: 10, 20, 30, 21, 32, 45
totmarsen: 1, 2, 3, 1, 1, 1

wat ik eruit wil hebben;

ID: 4, 5, 6 - de laatst gespeelde partijen op speeldata
speeeldata: 2014-09-10 (als het mogelijk is als 10 september 2014)
spelerid: 1, 2, 3
speler: speler a, speler b, speler c -gesorteerd op totpunten hoog, laag
punten: 21, 32, 45 - behaald op speeldata
marsen: 1, 1, 1 - behaald op speeldata
totpunten: 55, 52, 51 - totaal behaald door spelers
totmarsen: 2, 3, 4 - totaal behaald door spelers

hopelijk is dit wat je bedoeld?
Ik denk dat je je data niet heel handig opslaat.

Waarom zijn er maar 2 waarden in de kolom speeeldata?

Is het niet handiger om de info van de spelers apart op te slaan:

spelers
speler_id int
spelernaam varchar


wedstrijden
wedstrijd_id int
datum date

scores
speler_id int FK int
wedstrijd_id FK int
punten int
marsen int

En ik heb het vermoeden dan totpunten en totmarsen iets te maken heeft met een optelling van marsen en punten.

Reageren