SQL-statement (eerstvolgende datum na sysdate)
Op een scherm in de kantine wil ik graag het programma tonen van de volgende speelronde.
Zelf kom ik niet verder dan de datum hard in het statement te noemen.
Iemand die mij kan helpen dit te verfraaien zodat het resultaat is dat het programma van de eerstvolgende datum na nu (sysdate) getoond wordt?
Alvast bedankt voor de moeite!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$q_wedstrijdoverzicht = "select date_format(wed.datum, '%d-%m-%Y') datum
, time_format(wed.tijd, '%H:%i') tijd
, wed.klasse klasse
, tmt.naam thuis
, tmu.naam uit
from wedstrijden wed
, teams tmt
, teams tmu
where wed.thuis_id = tmt.id
and wed.uit_id = tmu.id
and wed.datum >= now()
and wed.datum = '2011-09-23'
/* and wed.datum < adddate(now(), interval 32 day) */
order by wed.datum, wed.tijd asc; ";
, time_format(wed.tijd, '%H:%i') tijd
, wed.klasse klasse
, tmt.naam thuis
, tmu.naam uit
from wedstrijden wed
, teams tmt
, teams tmu
where wed.thuis_id = tmt.id
and wed.uit_id = tmu.id
and wed.datum >= now()
and wed.datum = '2011-09-23'
/* and wed.datum < adddate(now(), interval 32 day) */
order by wed.datum, wed.tijd asc; ";
Gewijzigd op 10/09/2011 19:08:31 door Folko Huizinga
CURDATE()
Ik heb CURDATE() geprobeerd, maar dan worden de wedstrijden van vandaag gehaald.
Ik heb ook "> CURDATE()" geprobeerd, maar dan worden alle wedstrijden gehaald die na vandaag gespeeld worden (het hele jaarprogramma)
Ik zoek eigenlijk een statement waarbij alleen de wedstrijden opgehaald worden die gespeeld worden op de eerstvolgende datum na vandaag.
LIMIT 1
Dat is wat ik bedoel.
Als ik CURDATE() gebruik in combinatie met LIMIT 1 dan krijg ik maar één wedstrijd terug, terwijl het 20 wedstrijden (die op die datum gespeeld worden) zouden moeten zijn.
DATE_FORMAT(`wed`.`datum`, "%Y %m %d") > DATE_FORMAT(NOW(), "%Y %m %d");
Folko Huizinga op 10/09/2011 20:18:53:
Alweer dank voor je reactie.
Dat is wat ik bedoel.
Als ik CURDATE() gebruik in combinatie met LIMIT 1 dan krijg ik maar één wedstrijd terug, terwijl het 20 wedstrijden (die op die datum gespeeld worden) zouden moeten zijn.
Dat is wat ik bedoel.
Als ik CURDATE() gebruik in combinatie met LIMIT 1 dan krijg ik maar één wedstrijd terug, terwijl het 20 wedstrijden (die op die datum gespeeld worden) zouden moeten zijn.
Wat betekent LIMIT 1 volgens jou? Juist, dat er maximaal 1 resultaat wordt terug gegeven.
Jacco Brandt op 10/09/2011 22:29:22:
DATE_FORMAT(`wed`.`datum`, "%Y %m %d") > DATE_FORMAT(NOW(), "%Y %m %d");
Dank voor je reactie, Jacco...
maar op deze mnaier worden alle wedstrijden die in de database aanwezig zijn opgehaald, terwijl ik alleen maar de wedstrijden van de eerstvolgende wedstrijddatum wil hebben...
Toevoeging op 10/09/2011 23:11:32:
Arjan - op 10/09/2011 23:04:08:
Wat betekent LIMIT 1 volgens jou? Juist, dat er maximaal 1 resultaat wordt terug gegeven.
Zover was ik dus ook... Weet inmiddels al wel een aantal manieren hoe het niet moet!
Wat wil je nou precies? Alles van één bepaalde datum? Dan moet je toch die datum ingeven. Ik snap het waarschijnlijk niet goed.
SELECT .... FROM tabel WHERE datum = (SELECT MIN(datum) FROM tabel WHERE ....)
Heb het voor elkaar.
Iedereen bedankt voor de hulp.