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 :

Problème lors d'un Count avec condition sur un élément d'une sous-requête


Sujet :

SQL Oracle

  1. #1
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut Problème lors d'un Count avec condition sur un élément d'une sous-requête
    Bonjour voiçi ma requête originale:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    SELECT   SUM ("ClientProducteur_Nombre") AS "ClientProducteur_Nombre",
             SUM ("Fruit_Cantal_SupBio") AS "Fruit_Cantal_SupBio",
             SUM ("Fruit_Cantal_SupStd") AS "Fruit_Cantal_SupStd",
             a.mun_cd_geo_muncp AS "CODEGEO"
        FROM v_mgx_mpo_muncp_polgn a
             INNER JOIN
             (SELECT DISTINCT 1 AS "ClientProducteur_Nombre",
                              SUM
                                 (DECODE (b.pve_cd_prodc_veg_c,
                                          'FRUI_CANT', DECODE
                                                          (b.mpv_val_suprf_bio__c,
                                                           NULL, 0,
                                                           b.mpv_val_suprf_bio__c
                                                          ),
                                          0
                                         )
                                 ) AS "Fruit_Cantal_SupBio",
                              SUM
                                 (DECODE (b.pve_cd_prodc_veg_c,
                                          'FRUI_CANT', DECODE
                                                        (b.mpv_val_suprf_stand__c,
                                                         NULL, 0,
                                                         b.mpv_val_suprf_stand__c
                                                        ),
                                          0
                                         )
                                 ) AS "Fruit_Cantal_SupStd",
                              a.pkcla, a.mun_cd_geo_muncp
                         FROM mgx_cpr_clint_prodc_point a
                              LEFT JOIN
                              (SELECT a.pkcla, NULL AS mpv_val_suprf_bio__c,
                                      NULL AS pve_cd_prodc_veg_c,
                                      NULL AS mpv_val_suprf_stand__c
                                 FROM mgx_cpr_clint_prodc_point a LEFT JOIN mgx_cla_clint_agrnv b
                                      ON a.pkcla = b.pkcla
                               UNION ALL
                               SELECT a.pkcla,
                                      c.mpv_val_suprf_bio_ha
                                                          AS mpv_val_suprf_bio__c,
                                      c.pve_cd_prodc_vegtl AS pve_cd_prodc_veg_c,
                                      c.mpv_val_suprf_stand_ha
                                                        AS mpv_val_suprf_stand__c
                                 FROM mgx_cpr_clint_prodc_point a LEFT JOIN v_mgx_req_prodc_vegtl c
                                      ON a.pkcla = c.pkcla
                                      ) b ON a.pkcla = b.pkcla
                     GROUP BY a.pkcla,
                              a.mun_cd_geo_muncp,
                              b.pve_cd_prodc_veg_c,
                              b.mpv_val_suprf_bio__c) t
             ON a.mun_cd_geo_muncp = t.mun_cd_geo_muncp
      HAVING   SUM ("ClientProducteur_Nombre")
             + SUM ("Fruit_Cantal_SupBio")
             + SUM ("Fruit_Cantal_SupStd") > 0
    GROUP BY a.mun_cd_geo_muncp
    Je voudrais rajouter un Count des éléments "Fruit_Cantal_SupBio" de la première sous-requête qui sont (>) plus grand que (0) zéro soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT("Fruit_Cantal_SupBio") FROM T WHERE ("Fruit_Cantal_SupBio") > 0
    qui donnerait comme requête finale:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    SELECT   SUM ("ClientProducteur_Nombre") AS "ClientProducteur_Nombre",
             SUM ("Fruit_Cantal_SupBio") AS "Fruit_Cantal_SupBio",
             (SELECT COUNT("Fruit_Cantal_SupBio") FROM T WHERE ("Fruit_Cantal_SupBio") > 0) as "Nb_Prod_Fruit_Cantal_SupBio",
             SUM ("Fruit_Cantal_SupStd") AS "Fruit_Cantal_SupStd",
             a.mun_cd_geo_muncp AS "CODEGEO"
        FROM v_mgx_mpo_muncp_polgn a
             INNER JOIN
             (SELECT DISTINCT 1 AS "ClientProducteur_Nombre",
                              SUM
                                 (DECODE (b.pve_cd_prodc_veg_c,
                                          'FRUI_CANT', DECODE
                                                          (b.mpv_val_suprf_bio__c,
                                                           NULL, 0,
                                                           b.mpv_val_suprf_bio__c
                                                          ),
                                          0
                                         )
                                 ) AS "Fruit_Cantal_SupBio",
                              SUM
                                 (DECODE (b.pve_cd_prodc_veg_c,
                                          'FRUI_CANT', DECODE
                                                        (b.mpv_val_suprf_stand__c,
                                                         NULL, 0,
                                                         b.mpv_val_suprf_stand__c
                                                        ),
                                          0
                                         )
                                 ) AS "Fruit_Cantal_SupStd",
                              a.pkcla, a.mun_cd_geo_muncp
                         FROM mgx_cpr_clint_prodc_point a
                              LEFT JOIN
                              (SELECT a.pkcla, NULL AS mpv_val_suprf_bio__c,
                                      NULL AS pve_cd_prodc_veg_c,
                                      NULL AS mpv_val_suprf_stand__c
                                 FROM mgx_cpr_clint_prodc_point a LEFT JOIN mgx_cla_clint_agrnv b
                                      ON a.pkcla = b.pkcla
                               UNION ALL
                               SELECT a.pkcla,
                                      c.mpv_val_suprf_bio_ha
                                                          AS mpv_val_suprf_bio__c,
                                      c.pve_cd_prodc_vegtl AS pve_cd_prodc_veg_c,
                                      c.mpv_val_suprf_stand_ha
                                                        AS mpv_val_suprf_stand__c
                                 FROM mgx_cpr_clint_prodc_point a LEFT JOIN v_mgx_req_prodc_vegtl c
                                      ON a.pkcla = c.pkcla
                                      ) b ON a.pkcla = b.pkcla
                     GROUP BY a.pkcla,
                              a.mun_cd_geo_muncp,
                              b.pve_cd_prodc_veg_c,
                              b.mpv_val_suprf_bio__c) t
             ON a.mun_cd_geo_muncp = t.mun_cd_geo_muncp
      HAVING   SUM ("ClientProducteur_Nombre")
             + SUM ("Fruit_Cantal_SupBio")
             + SUM ("Fruit_Cantal_SupStd") > 0
    GROUP BY a.mun_cd_geo_muncp
    malheureusement ça m'indique pour "T" : Table ou vue inexistante

    Je ne sais pas trop quoi faire

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 38
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    A priori T n'existe pas au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT("Fruit_Cantal_SupBio") FROM T WHERE ("Fruit_Cantal_SupBio") > 0
    La question serait si un produit vérifie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ("ClientProducteur_Nombre")
             + SUM ("Fruit_Cantal_SupBio")
             + SUM ("Fruit_Cantal_SupStd") > 0
    mais qu'en parallèle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(Fruit_Cantal_SupBio) = 0
    quel résultat vas tu afficher

Discussions similaires

  1. [AC-2010] Requête Update sur le résultat d'une sous-requête
    Par curt dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 06/07/2013, 21h40
  2. Réponses: 7
    Dernier message: 08/08/2011, 11h42
  3. Requetes Avec Count et condition sur date
    Par Harry dans le forum WinDev
    Réponses: 1
    Dernier message: 04/06/2007, 15h23
  4. Réponses: 3
    Dernier message: 06/10/2006, 14h55
  5. Réponses: 12
    Dernier message: 12/06/2006, 14h29

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