[SQL] Question pour une requete sous Oracle...

Question pour une requete sous Oracle... [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 28-05-2003 à 15:41:02    

Voila dans ma table g ca..
Date             Time
01/01/2002 10:00   0
01/01/2002 10:01   1
...
01/01/2002 12:00   120
 
C'est un exemple...c un peu plus compliqué en réalité..
Quelle requete faire pour n'avoir en réponse du select que la derniere ligne...? (soit 01/01/2002 12:00  120)
 
 
Merci beaucoup!
Ca urge assez... :)

Reply

Marsh Posté le 28-05-2003 à 15:41:02   

Reply

Marsh Posté le 28-05-2003 à 16:00:44    

si tu avais lu les regles, tu aurais vu qu'on ne dit pas que "ca urge...". M'enfin...
 
Sinon, pour ta requete, oriente toi vers la fonction MAX() ([:google]), mais je ne sais pas si ca fonctionne avec des heures...
 
edit: c'est quoi la dernière colonne ?


Message édité par backdafuckup le 28-05-2003 à 16:01:12
Reply

Marsh Posté le 28-05-2003 à 16:01:35    

Le probleme du Max c que qd tu fais un select sur plusieurs champs, il faut un group by...et la ...
Enfin voila!
 
Merci pour ton aide..

Reply

Marsh Posté le 28-05-2003 à 16:04:07    

Code :
  1. declare
  2. v_max integer ;
  3. begin
  4. select max(taColonne) into v_max from taTable ;
  5. select * from taTable where taColonne = v_max ;
  6. end


 
Debrouille toi pour que le max de taColonne traite quelquechose de significatif. Je me suis jamais trop penché sur les dates et heures en oracle et je ne sais pas comment tu les stockes, mais si tu veux faire un max dessus, assure toi que max gère une date/heure. Si c'est pas le cas, il faudra au préalable travailler sur ces deux champs pour faire ton max. Enfin tu vois le topo quoi.


Message édité par Masure le 28-05-2003 à 16:04:56
Reply

Marsh Posté le 28-05-2003 à 16:06:15    

Methode barbare:
 
SELECT date,time FROM table WHERE id = (SELECT MAX(id) FROM table)
 
Et comme ca tu peux faire la requete avec les champs que tu veux et pas besoin de GROUP BY.

Reply

Marsh Posté le 28-05-2003 à 16:09:34    

J'ai implémenté la méthode barbare...en attendant de voir si je trouve mieux..
 
Merci a tous!

Reply

Marsh Posté le 28-05-2003 à 16:16:58    

La méthode que je préfère :
 
SELECT date,time FROM table WHERE ROWNUM=1 ORDER BY time DESC
 
A condition de ne vouloir qu'une seule ligne bien sûr !


Message édité par Mara's dad le 28-05-2003 à 16:18:05

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 28-05-2003 à 16:17:12    

trier par id ca veut pas dire grand chose quand meme, il vaudrait mieux qu'il se penche sur un max de date heure avec les traitements que ca implique

Reply

Marsh Posté le 28-05-2003 à 16:29:59    

Mara's dad a écrit :

La méthode que je préfère :
 
SELECT date,time FROM table WHERE ROWNUM=1 ORDER BY time DESC
 
A condition de ne vouloir qu'une seule ligne bien sûr !


 
A tester..Mias je ne suis pas tres convaincu..
Merci quand meme!

Reply

Marsh Posté le 28-05-2003 à 16:36:56    

Ben33 a écrit :


 
A tester..Mias je ne suis pas tres convaincu..
Merci quand meme!


 
J'ai testé les deux sur une grosses table ( 4.172.357 enregs ) et c'est le même temps de réponse : ~170 ms la première fois puis ~50 ms la deuxième et les suivantes .


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

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