Hoe kan ik het aantal kolommen bepalen welke een minimale waarde bevatten
Ik ben op zoek naar een manier om het aantal kolommen in een database tabel te bepalen die een minimale waarde bevatten.
Ik gebruik onderstaande Query om een stand weer te geven, maar moet nu nog zelf het aantal toernooien (gesp) invoeren, dat kan toch zeker ook anders?
SELECT voornaam, tussenvoegsel, achternaam, geslacht, gesp, toern1, toern2, toern3, toern4, toern5, toern6, toern7, toern8, toern9, toern10, toern11, toern12, toern13, toern14, toern15, rankingnaam, rankingstand.seizoen, sum(toern1 + toern2 + toern3 + toern4 + toern5 + toern6 + toern7 + toern8 + toern9 + toern10 + toern11 + toern12 + toern13 + toern14 + toern15) as totaal FROM spelers, rankingstand WHERE rankingstand.speler_id = spelers.speler_id AND rankingnaam = 'xxx' AND rankingstand.seizoen = 'xxx' AND stand_id GROUP BY stand_id ORDER BY totaal DESC, spelers.achternaam ASC
Ik gebruik onderstaande Query om een stand weer te geven, maar moet nu nog zelf het aantal toernooien (gesp) invoeren, dat kan toch zeker ook anders?
SELECT voornaam, tussenvoegsel, achternaam, geslacht, gesp, toern1, toern2, toern3, toern4, toern5, toern6, toern7, toern8, toern9, toern10, toern11, toern12, toern13, toern14, toern15, rankingnaam, rankingstand.seizoen, sum(toern1 + toern2 + toern3 + toern4 + toern5 + toern6 + toern7 + toern8 + toern9 + toern10 + toern11 + toern12 + toern13 + toern14 + toern15) as totaal FROM spelers, rankingstand WHERE rankingstand.speler_id = spelers.speler_id AND rankingnaam = 'xxx' AND rankingstand.seizoen = 'xxx' AND stand_id GROUP BY stand_id ORDER BY totaal DESC, spelers.achternaam ASC
Je kan beter kijken naar databasenormalisatie. Want een database moet flexibel zijn, en mag geen genummerde velden kennen.
Dus terug naar de tekentafel en lees de hoofdstukken over databasenormalisatie eens door.
Dus terug naar de tekentafel en lees de hoofdstukken over databasenormalisatie eens door.
Ik ben het met Aar eens. voornaam e.d. zijn persoonsgegevens. Toernooien zijn iets heel anders. Je zult dan al minimaal twee tabellen krijgen waarbij in de tabel Toernooien dan voor de personen hun id opgeslagen wordt in een kolom 'spelers' en ieder toernooi een nummer krijgt (id) zodat je niet meer met toern1-15 kolommen aan de gang hoeft.
Dus dan zou het zoiets moeten worden:
SELECT spelers.voornaam, spelers.tussenvoegsel, spelers.achternaam, rankingstand.speler_id, aantal, SUM(aantal) as score FROM rankingstand, spelers WHERE rankingstand.speler_id=spelers.speler_id AND rankingnaam = 'xxx' GROUP BY rankingstand.speler_id ORDER BY score DESC
En dan bepalen in hoeveel rijen iemand een bepaalde score heeft behaald.
En dan bij de weergave ervoor zorgen dat elk toernooi wel in de juiste kolom komt te staan, want het moet natuurlijk wel netjes in een tabel komen.
SELECT spelers.voornaam, spelers.tussenvoegsel, spelers.achternaam, rankingstand.speler_id, aantal, SUM(aantal) as score FROM rankingstand, spelers WHERE rankingstand.speler_id=spelers.speler_id AND rankingnaam = 'xxx' GROUP BY rankingstand.speler_id ORDER BY score DESC
En dan bepalen in hoeveel rijen iemand een bepaalde score heeft behaald.
En dan bij de weergave ervoor zorgen dat elk toernooi wel in de juiste kolom komt te staan, want het moet natuurlijk wel netjes in een tabel komen.
Alleen moet je query dan wel in het stuk Group By alle kolommen bevatten die niet een aggregatie functie zijn. Dus spelers.voornaam, spelers.tussenvoegsel, spelers.achternaam, rankingstand.speler_id, aantal
En group by op aantal, terwijl je gelijktijdig ook SUM over aantal wilt weten? Dat gaat niet lukken.
zie ook http://wiki.pfz.nl/groupby
En group by op aantal, terwijl je gelijktijdig ook SUM over aantal wilt weten? Dat gaat niet lukken.
zie ook http://wiki.pfz.nl/groupby




