|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : octobre 2008 Messages : 21 ![]() |
Bonjour
Je vous avouerais tout d'abord que je n'étais pas très inspiré pour le titre de cette discussion, mais c'est un peu difficile à expliquer en quelques mots. Voici le problème : J'ai une table évènements qui contient énoooormement d'entrées, cette table est liée à une autre (en fait plusieurs mais on va faire simple) qui stocke la ou les dates de l'évènement. Un évènement peut avoir une seule date (comprenez jour et horaire) ou plusieurs ou carrément une plage de date (de temps à temps). Le résultat voulu est un rowset de tous les évènements triés par date, mais pas n'importe comment : - D'abord les évènements qui ne se déroulent qu'aujourd'hui. - Ensuite les évènements qui se déroulent sur période incluant le jour actuel. - Puis les évènement qui se déroulent strictement après la date d'aujourd'hui. En version simplifié, l'idée serait de faire : Code :
Je ne sais pas si c'est possible avec une procédure stockée, je suis vraiment novice dans ce domaine et j'ai du mal à voir comment régler ce problème avec. Des idées, suggestions ? Merci PS : Je suis sous un environnement Zend et ai besoin d'un résultat sous forme de rowset pour passer tout ça au paginator. |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Vous pouvez mettre un CASE dans votre ORDER BY
Genre : Code :
En effet par exemple, les données recupérées par Code :
WHERE date_debut = "aujourd'hui" AND date_fin = "aujourd'hui" Code :
WHERE (date_debut <= "aujourd'hui" AND date_fin > "aujourd'hui") OR (date_debut = "aujourd'hui" AND date_fin >= "aujourd'hui")
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : octobre 2008 Messages : 21 ![]() |
Oops, j'ai supprimé le mauvais caractère
C'est plutôt : Code :
WHERE (date_debut <= "aujourd'hui" AND date_fin > "aujourd'hui") OR (date_debut < "aujourd'hui" AND date_fin >= "aujourd'hui") Sinon pour ce qui est du CASE dans le ORDER BY, je ne connaissais pas ! Je vais essayer ça de ce pas Reste à savoir comment faire ça avec la syntaxe Zend... Merci de cette rapide réponse ^^. |
|
|
00
|
|
|
#4 |
![]() ![]() |
Pour dire "aujourd'hui" en SQL, c'est CURRENT_DATE.
Quant à la syntaxe Zend, faites votre requête en SQL natif, ce sera plus simple que le pseudo SQL compliqué en plusieurs morceaux !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Inscription : octobre 2008 Messages : 21 ![]() |
A priori, ça fonctionne, je n'ai pas pu déployer cette solution sur le site en ligne pour le moment. Je continue mes tests en dev mais ça semble plutôt bien fonctionner
Merci à vous. pour le "aujourd'hui", c'était pour aller plus vite et être plus compréhensible ^^ Pour la syntaxe Zend, ça fonctionne de cette manière : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com