Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2969 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete redondante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requete redondante

n°1911438
valco44
Posté le 03-08-2009 à 22:55:45  profilanswer
 

Bonjour,
 
j'ai une requete sous Oracle qui retourne quatre champs en Une ligne  
Cette requete je dois la faire tourner 60 fois ( pour les 5 ans * 12 mois suivants le 31/03/2009 ) , les mois sot consecutifs
Et donc j’aimerai bien automatiser cette tache  
Ps : ma requete est tres simplifié ici , à la base pour un seul select ( sur un mois) elle prend vers les 4 ou 5 minutes  
et donc j'ai fait vite fait quelque chose du genre :
 
BEGIN
 FOR i IN  1 .. 60 LOOP
Select max(var)
From table1
Where date > ‘2009/03/31’
Union
Select max(var)
From table1
Where date > add_months(‘2002/03/31’,i)
End loop;
End;
 
je ne sais pas si c'est une bonne piste , merci de vouloir m'aider  

mood
Publicité
Posté le 03-08-2009 à 22:55:45  profilanswer
 

n°1911465
Taz
bisounours-codeur
Posté le 04-08-2009 à 08:39:41  profilanswer
 

Tu ferais mieux de faire un group by extraire_le_mois(date)

n°1911471
pataluc
Posté le 04-08-2009 à 08:51:53  profilanswer
 

Taz a écrit :

Tu ferais mieux de faire un group by extraire_le_mois(date)


j'avais pensé à proposer ca, mais j'avais peur de dire une betise... pour ma culture, ca peut gagner beaucoup en temps d'exécution et sur le calcul du plan et tout et tout?

n°1911590
valco44
Posté le 04-08-2009 à 12:36:57  profilanswer
 

merci pour vos réponses, il faut que je m'explique peut etre mieux parce que je n'ai pas compris l'interet d'un group by, je n'ai rien à grouper, ne vous fiez pas au code que j'ai mis c'était pour illuster un peu vaguement;  
le probleme est : j'ai cette requete qui me renvoie une ligne pour la date 31/03/2001
je dois la faire tourner sur les 60 mois suivants , et donc je vais tourner la requete 60 fois pour avoir 60 ligne ( chaque ligne je la copie sur un fichier excel avant de passer au mois suivant)
moi, je cherche quelque chose qui me permet d'avoir les 60 lignes à la fois , cela fait pe,ser directement à une boucle pour les mois add_months(mois,i) , et des unions sur les lignes pour avoir une seule table à la fin  
peut etre je suis sur la bonne piste (il faut chercher dans ce cas comment integrer UNION dans la boucle) , ou peut etre que je suis à coté

n°1911630
casimimir
Posté le 04-08-2009 à 14:34:43  profilanswer
 

fais plutot un truc genre ci-dessous, si je comprend bien tes données un group by ne renverrait pas un résultat correct car tu veux des résultats sur des périodes qui peuvent se chevaucher( si c'est pas le cas alors oui fais un group by)
 
 

Code :
  1. param_max_var number;
  2.  
  3. BEGIN
  4. FOR i IN  1 .. 60 LOOP
  5.    SELECT max(var) INTO param_max_var
  6.   FROM table1
  7.   WHERE date > add_months(2002/03/31’,i);
  8.  
  9.   INSERT INTO une_table_destination VALUES (add_months(2002/03/31’,i),param_max_var);
  10.  commit;
  11. End loop;
  12. End;

n°1911632
Taz
bisounours-codeur
Posté le 04-08-2009 à 14:41:03  profilanswer
 

pataluc a écrit :


j'avais pensé à proposer ca, mais j'avais peur de dire une betise... pour ma culture, ca peut gagner beaucoup en temps d'exécution et sur le calcul du plan et tout et tout?


Oui à fond !

n°1911676
valco44
Posté le 04-08-2009 à 16:22:08  profilanswer
 

ay casimimir , c'est un peu quelque chose comme ça qui me faut, j'ai pas les privileges pour faire un INSERT, en core moins un CREATE TABLE, que des SELECT, c'est pour ça que je parle de Union ou union all
 
pour faire simple , ma requete en gros est du type :
select max(montant)
from ma_table
where date > ma_date ;
franchement je bloque sur le group by, ça m'obligera de tout recommencer ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete redondante

 

Sujets relatifs
Convertir le résultat d'une requête SQL en fichier excelDiaporama avec requete sql.
[RESOLU] Problème de requête et mysql_num_rows[MySQL] Requete avec JOIN : infos dans des bases différentes
Besoin d'aide pour une requête MySQL jointe + affichage (hiérachie)Requete avec somme sur valeur et filtre sur date
[Access 2003]Créer une table à partir d'une requètePL/SQL : utilisation de variable pour liste de valeur dans requête
Interface requête Base de données EXCELRequete SQL sélectionnant le plus petit nombre unique
Plus de sujets relatifs à : requete redondante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR