MAX() Functie en andere kolommen

Status
Niet open voor verdere reacties.

Jeppey

Gebruiker
Lid geworden
5 jun 2006
Berichten
26
Ik heb een betrekkelijk eenvoudige vraag over SQL. Ik moet namelijk de maximale leeftijd tonen met de bijbehorende naam en achternaam.

Dit heb ik, maar werkt niet:

SELECT voornaam, achternaam, MAX(leeftijd)
FROM tbl_Student;


Hoe krijg ik dit wel goed getoond?
 
Zo dan?
PHP:
select voornaam, achternaam, leeftijd
from tbl_student
where leeftijd = (select max(leeftijd) from tbl_student);
 
Zo dan?
PHP:
select voornaam, achternaam, leeftijd
from tbl_student
where leeftijd = (select max(leeftijd) from tbl_student);

Misschien een beetje laat, maar onderstaande code is beter dan de bovenstaande.
Als er namelijk 2 leerlingen zouden zijn met dezelfde geboortedatum zou je een foutmelding krijgen en nu niet.


PHP:
select voornaam, achternaam, leeftijd
from tbl_student
where leeftijd in (select max(leeftijd) from tbl_student);
 
Laatst bewerkt:
Kan zoiets niet handiger / sneller?
PHP:
SELECT voornaam, achternaam, leeftijd, MAX(leeftijd) AS max_leeftijd
FROM tbl_student
GROUP BY leeftijd

:thumb:
 
Ondanks dat het zo'n oud draadje is, toch nog even een reactie ;)

Als er namelijk 2 leerlingen zouden zijn met dezelfde geboortedatum zou je een foutmelding krijgen en nu niet.

Dit klopt niet. Door het gebruik van de functie max() geeft de query "select max(leeftijd) from tbl_student" altijd maar één waarde terug. Je kunt dus gewoon "=" gebruiken. Verder is bij mij de variant met "=" op een tabel met ruim 50.000 records een fractie sneller. Wat wel voor kan komen wanneer er 2 leerlingen zijn met dezelfde geboortedatum is dat de query 2 records terug geeft. De code die het resultaat van de query verwerkt (bijvoorbeeld php) moet hier wel mee om kunnen gaan.

Kan zoiets niet handiger / sneller?
PHP:
SELECT voornaam, achternaam, leeftijd, MAX(leeftijd) AS max_leeftijd
FROM tbl_student
GROUP BY leeftijd

Ook dit geeft volgens mij niet het gewenste resultaat. Deze geeft namelijk voor alle leeftijden een voor- en achternaam.
 
Ondanks dat het zo'n oud draadje is, toch nog even een reactie ;)



Dit klopt niet. Door het gebruik van de functie max() geeft de query "select max(leeftijd) from tbl_student" altijd maar één waarde terug. Je kunt dus gewoon "=" gebruiken. Verder is bij mij de variant met "=" op een tabel met ruim 50.000 records een fractie sneller. Wat wel voor kan komen wanneer er 2 leerlingen zijn met dezelfde geboortedatum is dat de query 2 records terug geeft. De code die het resultaat van de query verwerkt (bijvoorbeeld php) moet hier wel mee om kunnen gaan.



Ook dit geeft volgens mij niet het gewenste resultaat. Deze geeft namelijk voor alle leeftijden een voor- en achternaam.

LIMIT 1 erachter? Ik vind dat netter en beter dan 2 queries..

Excuses, had niet naar de datum gekeken :o
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan