Requête SQL - SQL/NoSQL - Programmation
Marsh Posté le 18-03-2008 à 11:33:47
Si je me souviens bien : un timestamp contient date+heure ?
tu fais un ORDER BY date_fin_theo ASC histoire de les classer par ordre chronologique
tu fais un SELECT TOP 1 pour n'avoir qu'un seul résultat
tu fais un WHERE date_dernier_msg <= date_fin_theo
je te laisse remettre le tout dans l'ordre
Marsh Posté le 15-03-2008 à 18:23:57
Bonjour,
Etant tres faible en SQL, et ayant pas mal cherché, je coince sur quelque chose qui va vous sembler d'une simplicité enfantine.
J'ai deux tables :
- TM04_INFORMATION_RAME
* colonne 1 : numero_rame (pk, varchar2)
* colonne 2 : etat (number)
* colonne 3 : date_dernier_msg (timestamp(6) )
- TM04_CIRCULATION_THEORIQUE
* ID (pk, number),
* numero_rame (fk, ref TM04_INFORMATION_RAME.numero_rame),
* date_debut_theo : timestamp(6)
* date_fin_theo : timestamp(6)
TM04_INFORMATION_RAME stocke des informations d'une rame issus de flux xml ainsi que la date du dernier message recu.
Je souhaite, pour toutes ces rames, avec l'etat 1-2 récupérer les circulations théoriques.
Jusque la pas de soucis.
Maintenant, je ne souhaite récupérer QUE la circulation théorique la plus proche de la date du dernier message recu pour cette rame.
Exemple :
- j'ai une rame, la 301, avec l'état 1, son dernier message est aujourd'hui, 12:00:00
- cette rame à 3 circulations théoriques ce jour la :
* la 1ere : de 11:00:00 à 11:30
* la 2eme : à 15:00 à 16:00
* la 3eme : à 17:00 30
Ma requête devra donc ne récupérer QUE la 2ème, car la 1ère est déja passée (ça, j'arrive à la jeter), et la 3 ème est plus lointaine que la deuxième.
Il faudrait aussi que ce soit aussi le cas lorsque la date du dernier message recu soit compris dans l'une de ses circulations. (dernier msg recu entre 11h et 11h30 par exemple donc la 1ere)
On m'a imposé le fait que tout cela doit être fait en one shot (une seule requête) ... c'est en fait ce qui me pose problème
Votre aide serait vraiment appréciable.
Merci d'avance