Requête SQL

Requête SQL - SQL/NoSQL - Programmation

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 :18: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  :jap:

Reply

Marsh Posté le 15-03-2008 à 18:23:57   

Reply

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 :D


---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed