Hoe kan ik het aantal kolommen bepalen welke een minimale waarde bevatten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jaap Dijksman

Jaap Dijksman

10/05/2013 15:47:07
Quote Anchor link
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
 
PHP hulp

PHP hulp

16/04/2024 12:07:12
 
- Ariën  -
Beheerder

- Ariën -

10/05/2013 15:49:39
Quote Anchor link
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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/05/2013 16:22:49
Quote Anchor link
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.
 
Jaap Dijksman

Jaap Dijksman

10/05/2013 16:51:46
Quote Anchor link
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.
 
Ivo P

ivo P

10/05/2013 17:09:18
Quote Anchor link
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.