Versio

GROUP BY: Het juiste gebruik ervan

Hoe gebruik je een GROUP BY clausule correct in je SQL query?

Gesponsorde koppelingen

BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  

Inhoudsopgave

  1. Inleiding
  2. Uitleg GROUP BY en gebruikte basisgegevens
  3. Fout gebruik van de GROUP BY clausule
  4. GROUP BY en verzamelingsfuncties
  5. Groeperen op meerdere kolommen
  6. GROUP BY en HAVING
  7. GROUP BY Modifiers
  8. Slotwoord en referenties

 

6 reacties op 'GROUP BY: Het juiste gebruik ervan'

PHP hulp
PHP hulp
0 seconden vanaf nu
 
Gesponsorde koppelingen
Klaasjan Boven
Klaasjan Boven
6 jaar geleden
 
0 +1 -0 -1
Eindelijk, Blanche eindelijk iemand met het juiste gebruik van group by en having

je in een WHERE geen verzamelingsfuncties op mag nemen en in een HAVING wel.

zou ik vervangen door

je in een WHERE geen verzamelingsfuncties op kunt nemen en in een HAVING alleen maar verzamelfuncties oftwel geen restricties die je normaal in een WHERE zou stoppen
Frank -
Frank -
6 jaar geleden
 
0 +1 -0 -1
Quote:
Ik wil je aanraden om niet van de SQL standaard af te wijken, op die manier is je code ook geschikt voor andere SQL databases.
Ik zou hier toch maar gewoon melden dat je met correct gebruik van GROUP BY betrouwbare resultaten krijgt. Lijkt mij belangrijker dan een eventuele andere database. Het 'probleem' met andere databases is, is dat de query gewoon fout is en andere databases een foute query gewoon afkeuren. Wel zo handig.

Overigens kun je MySQL ook zo instellen dat een foute query ook gewoon wordt afgekeurd. Helaas doen de meeste hostingproviders daar niets mee.

Hier vind je overigens nog wat extra uitleg (in het NL) over GROUP BY.

Edit: Zie de MySQL-handleiding hoe je 'Strict' moet inschakelen.
Joren de Wit
Joren de Wit
6 jaar geleden
 
0 +1 -0 -1
Quote:
je in een WHERE geen verzamelingsfuncties op kunt nemen en in een HAVING alleen maar verzamelfuncties.
Dat is niet helemaal waar. In een HAVING mag je namelijk ook een kolom opnemen waarvan de waarden binnen 1 groep niet veranderen, oftewel een kolom die je in je GROUP BY clause hebt opgenomen.

Quote:
Ik zou hier toch maar gewoon melden dat je met correct gebruik van GROUP BY betrouwbare resultaten krijgt.
Aangepast. Dit is inderdaad een betere (directe) reden om niet van de standaard af te wijken.
Jan Koehoorn
Jan Koehoorn
6 jaar geleden
 
0 +1 -0 -1
Lekkere heldere tut, Blanche :-)
Ruud
ruud
4 jaar geleden
 
0 +1 -0 -1
Ik heb een tabel waarin ik mijn gegevens zet.

id registratie toestel maatschappij locatie
+----+-----------+-------------------+------------------+--------------+
| 1 | PH-MPQ | Boeing 747-400 | Martinair Cargo | Schiphol |
+----+-----------+-------------------+------------------+--------------+
| 2 | PH-XRA | Boeing 737-500 | Transavia | Eindhoven |
+----+-----------+-------------------+------------------+--------------+
| 3 | PH-MPS | Boeing 747-400 | Martinair Cargo | Dusseldorf |
+----+-----------+-------------------+-------------------+-------------+

Nu worden de resultaten ook rij voor rij weergegeven zoals hierboven staat. Ik zou eigenlijk willen dat dit gebeurd geordend op maatschappij, dus:

Martinair Cargo:
------------------------------------------------------
PH-MPQ - Boeing 747-400 - Schiphol
PH-MPQ - Boeing 747-400 - Dusseldorf

Transavia
------------------------------------------------------
PH-XRA - Boeing 737-500 - Eindhoven

Hoe maak je zoiets? Zou iemand kunnen helpen?
Joren de Wit
Joren de Wit
4 jaar geleden
 
0 +1 -0 -1
Ik denk dat je deze vraag beter in het forum kunt stellen, het heeft in principe namelijk niets met GROUP BY te maken.

Dit is iets dat je met PHP op zult moeten lossen: selecteer alle gegevens waarbij je sorteert op maatschappij. Vervolgens houd je in PHP tijdens het doorlopen van de resultaat set in een variabele bij met welke maatschappij je bezig bent. Als die verschilt van de vorige loop echo je hem opnieuw aangezien je dan bij een andere maatschappij aangekomen bent.

Maar zoals ik al zei, ik denk dat je hier beter op het forum verder over kunt gaan...

Om te reageren heb je een account nodig en je moet ingelogd zijn.

  • Labels
  • Geen tags toegevoegd.
Get Adobe Flash player