|
Categorieën >
PHP & SQL
Probleem met lager gelegen getal kiezen
|
|
|
offline
|
PHP interesse
|
Ik heb als query:
SELECT routenaam, MAX(routenummer) AS nummer FROM routes WHERE routenummer <=538
SELECT routenaam , MAX(routenummer ) AS nummer FROM routes WHERE routenummer <=538
En in de database staat:
routenummer | routenaam
------------+-------------
100 | Amsterdam - Basel
etc.... | Etc....
500 | Den Haag - Groningen
700 | Schiphol - Groningen
etc... | etc...
routenummer | routenaam ------------+------------- 100 | Amsterdam - Basel etc.... | Etc.... 500 | Den Haag - Groningen 700 | Schiphol - Groningen etc... | etc...
Hij toont wel netjes het getal 500, maar als route kiest hij merkwaardig genoeg wel voor Amsterdam Basel, terwijl het Den Haag - Groningen moet zijn...
Hoe kan dit?
Hoe komt dat? |
4 antwoorden
Sam – 11/05/2011 18:42
|
|
offline
|
PHP expert
|
SELECT routenaam, routenummer AS nummer FROM routes routenummer <=538 ORDER BY routenummer DESC LIMIT 1
SELECT routenaam, routenummer AS nummer FROM routes routenummer <=538 ORDER BY routenummer DESC LIMIT 1
Als je toch de MAX functie wilt gebruiken moet je met subqueries werken.
In jouw query is het resultaat de routenaam van elke route en het hoogste routenummer kleiner dan 538. Je resultatenset bevat wss ook alle rijen van je tabel in plaats van 1 rij zoals je zou verwachten?
|
|
|
|
offline
|
PHP interesse
|
Aar, je moet je result is in een while zetten, dan zie je wat er gebeurd ;)
|
Aar – 12/05/2011 00:06 (Laatst gewijzigd op 12/05/2011 00:07)
|
|
offline
|
PHP interesse
|
valles10 schreef: Aar, je moet je result is in een while zetten, dan zie je wat er gebeurd ;)
Ja, dan gebeurt er iets wat ik NIET wil....
lees anders de thread nog eens...
De subquery was de juiste truuk....
SELECT aa.routenaam
, mm.nummer
FROM routes aa
, (SELECT MAX(routenummer) AS nummer
FROM routes
WHERE routenummer <=538) mm
WHERE aa.routenummer = mm.nummer
SELECT aa.routenaam , mm.nummer FROM routes aa , (SELECT MAX(routenummer ) AS nummer FROM routes WHERE routenummer <=538) mm WHERE aa.routenummer = mm.nummer
|
Joost – 12/05/2011 20:20 (Laatst gewijzigd op 12/05/2011 20:22)
|
|
offline
|
PHP expert
|
Wat valles10 - geloof ik - bedoelde is dat de fout in je query direct duidelijk zou zijn wanneer je je resultset eens zou uitlezen met een while loop
|
Je moet ingelogd zijn om een reactie te kunnen posten.
|
|
|