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

SQL Oracle Discussion :

Oracle 10g - Eviter les sous-requêtes


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut Oracle 10g - Eviter les sous-requêtes
    Bonjour,

    Je cherche à réécrire cette requête de manière plus simple dans sous-requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select date_debut as Début,date_fin as Fin ,emet_iden as Emetteur, RESI_FISC as Resident,  ACTI_TYPE as Detention, 
    count(acti_iden) as Volume  FROM (select distinct date_debut ,date_fin,emet_iden,acti_iden ,RESI_FISC,TYPE FROM 
    ( select distinct DATE_DEBUT ,DATE_FIN,EMET_IDEN,VALE_NATU,TYPE_PROD,VALE_IDEN,RESI_FISC,MAX(ACTI_TYPE) AS TYPE,ACTI_IDEN 
    FROM FACT_CCN  WHERE  TYPE_CMPT='PHT'  AND EMET_IDEN=60  group by DATE_DEBUT ,DATE_FIN,EMET_IDEN,VALE_NATU,TYPE_PROD,
    VALE_IDEN,RESI_FISC,ACTI_IDEN ) )  group by date_debut,date_fin,emet_iden ,RESI_FISC, TYPE
    J'ai essayé avec la requête suivante mais cela ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    select date_debut as Début,date_fin as Fin ,emet_iden as Emetteur, RESI_FISC as Resident, max(ACTI_TYPE) as Detention, 
    count(distinct acti_iden) as Volume 
    FROM FACT_CCN 
    WHERE TYPE_CMPT='PHT'  AND EMET_IDEN=60
    group by date_debut,date_fin,emet_iden ,RESI_FISC, ACTI_TYPE
    Pouvez-vous me donner quelques pistes ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 782
    Points : 52 787
    Points
    52 787
    Billets dans le blog
    5
    Par défaut
    Vous ne pourrez pas parce qu'il y a un double agrégat, donc 2 GROUP BY enchainés !
    COUNT(... FROM ... MAX(.... ) ...

    Au mieux si la version 10g supporte les fonctions fenêtrées alors inspirez vous en... Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/article...clause-window/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut
    OK merci pour votre réponse.
    Mais ne peut-on pas déjà simplifier la requête ?

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Je dirais que tu dois pouvoir transformer en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT
    date_debut AS Début,date_fin AS Fin ,emet_iden AS Emetteur, RESI_FISC AS Resident,  ACTI_TYPE AS Detention, count(distinct acti_iden) AS Volume 
    FROM
    (
    		SELECT
    			DATE_DEBUT ,DATE_FIN,EMET_IDEN,ACTI_IDEN,RESI_FISC,
    			VALE_NATU,TYPE_PROD,VALE_IDEN,
    			MAX(ACTI_TYPE) AS TYPE 
    		FROM
    			FACT_CCN
    		WHERE  TYPE_CMPT='PHT'  AND EMET_IDEN=60
    		GROUP BY DATE_DEBUT ,DATE_FIN,EMET_IDEN,VALE_NATU,TYPE_PROD, VALE_IDEN,RESI_FISC,ACTI_IDEN
    )
    GROUP BY date_debut,date_fin,emet_iden ,RESI_FISC, TYPE
    Mais sans jeu de test il y a de grandes chances que je me sois trompé.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut
    Merci cela fonctionne avec cette requête.

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

Discussions similaires

  1. [Oracle 10g] Problème Union-sous requêtes-group by
    Par slobberbone dans le forum SQL
    Réponses: 2
    Dernier message: 17/09/2007, 18h16
  2. Réponses: 2
    Dernier message: 11/01/2007, 13h29
  3. Installation Oracle 10g release 2 sous XP
    Par jesuscrie dans le forum Oracle
    Réponses: 3
    Dernier message: 28/11/2006, 08h30
  4. Limitation d'Access pour les sous-requêtes ?
    Par guidav dans le forum Access
    Réponses: 5
    Dernier message: 19/10/2006, 12h18
  5. [IB 6, FireBird 1.5] SKIP dans les sous-requêtes
    Par Magnus dans le forum Langage SQL
    Réponses: 8
    Dernier message: 15/09/2005, 14h14

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