IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Problème pour l'enchainement de requête


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Par défaut Problème pour l'enchainement de requête
    Bonjour,
    J'aimerais pouvoir exécuter plusieurs requêtes en ayant récupérer les informations de la première. (Ceci afin d'optimiser le traitement.)
    Car pour le moment, je travaille de la façon suivante

    Voici la 1ere requete
    (SELECT a.id_app,d.appli,c.domaine,sum(a.obj_sauve),
    sum(a.vol_sauve),sum(a.nb_sauve)
    FROM stat_app_jour a ,groupe_app b, domaines c, applis d
    WHERE date>=to_date('01/02/2010', 'DD/MM/YYYY')
    AND date<to_date('01/02/2010', 'DD/MM/YYYY')+ '1 month'::interval
    AND a.id_app=b.id_app
    AND a.id_app=d.id_app
    AND b.id_dom=c.id_dom
    AND c.type_dom=1
    GROUP BY a.id_app,d.appli,c.domaine
    )
    EXCEPT
    (SELECT a.id_app,d.appli,c.domaine,sum(a.obj_sauve),
    sum(a.vol_sauve),sum(a.nb_sauve)
    FROM stat_app_mois a ,groupe_app b, domaines c, applis d
    WHERE a.id_app=b.id_app
    AND a.id_app=d.id_app
    AND b.id_dom=c.id_dom
    AND c.type_dom=1
    AND date>=to_date('01/02/2010', 'DD/MM/YYYY')
    AND date<to_date('01/02/2010', 'DD/MM/YYYY')+ '1 month'::interval
    GROUP BY a.id_app,d.appli,c.domaine
    )
    ORDER BY 3;
    Ensuite je récupère le 1er champ pour exécuté les requêtes suivantes

    La question est
    Est-ce possible de regrouper en utilisant une requête imbriqué?

    Pour information
    Le traitement est un contrôle de statistique pour un mois et une année données en paramètre , si je trouve une incohérence, je relance le traitement.
    D'avance merci...

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Par défaut
    voici la solution que j'ai trouvé
    1) creation d'une table temporaire à partir de mon select
    create temporary table diff_stat_app as
    (SELECT a.id_app,d.appli,c.domaine,sum(a.obj_sauve) as obj_sauve,
    sum(a.vol_sauve) as vol_sauve,sum(a.nb_sauve) as nb_sauve
    FROM stat_app_jour a ,groupe_app b, domaines c, applis d
    WHERE date>=to_date('01/02/2010', 'DD/MM/YYYY')
    AND date<to_date('01/02/2010', 'DD/MM/YYYY')+ '1 month'::interval
    AND a.id_app=b.id_app
    AND a.id_app=d.id_app
    AND b.id_dom=c.id_dom
    AND c.type_dom=1
    GROUP BY a.id_app,d.appli,c.domaine
    ORDER BY a.id_app,d.appli)
    EXCEPT
    (SELECT a.id_app,d.appli,c.domaine,sum(a.obj_sauve) as obj_sauve,
    sum(a.vol_sauve) as vol_sauve,sum(a.nb_sauve) as nb_sauve
    FROM stat_app_mois a ,groupe_app b, domaines c, applis d
    WHERE a.id_app=b.id_app
    AND a.id_app=d.id_app
    AND b.id_dom=c.id_dom
    AND c.type_dom=1
    AND date>=to_date('01/02/2010', 'DD/MM/YYYY')
    AND date<to_date('01/02/2010', 'DD/MM/YYYY')+ '1 month'::interval
    GROUP BY a.id_app,d.appli,c.domaine
    ORDER BY a.id_app,d.appli)
    ORDER BY 3;
    2)Nettoyage de la table en recuperant les données du 1er champ de ma table temporaire
    delete from stat_app_jour
    where id_app in (
    select id_app
    from diff_stat_app)
    AND date>=to_date('01/02/2010', 'DD/MM/YYYY')
    AND date<to_date('01/02/2010', 'DD/MM/YYYY')+ '1 month'::interval;
    3) Mise à jour des statistiques en recuperant les données du 1er champ de ma table temporaire
    INSERT INTO stat_app_jour
    SELECT a.id_app,b.date,count(b.id_serv),
    sum(b.obj_sauve),sum(b.vol_sauve),
    sum(b.nb_sauve),sum(b.err_sauve),sum(b.obj_rest),
    sum(b.vol_rest),sum(b.nb_rest),sum(b.err_rest)
    FROM serveurs a,vstat_serveur_jour b
    WHERE a.id_serv=b.id_serv
    AND a.id_app in (
    select id_app
    from diff_stat_app)
    AND date>=to_date('01/02/2010', 'DD/MM/YYYY')
    AND date<to_date('01/02/2010', 'DD/MM/YYYY')+ '1 month'::interval
    GROUP BY a.id_app,b.date
    ORDER BY a.id_app,b.date;
    Voili,voilà

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour relier des sous-requêtes
    Par chart dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/07/2014, 14h00
  2. Problème pour bâtir requête SQL
    Par Val2005 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/11/2005, 15h49
  3. Réponses: 7
    Dernier message: 10/09/2005, 16h49
  4. [Requête SQL] Problème pour echantilloner
    Par jool dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/08/2005, 09h08
  5. Problème pour la construction d'un requête
    Par TshAw dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/02/2005, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo