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

Langage SQL Discussion :

eviter une jointure dans un group by


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 26
    Points : 22
    Points
    22
    Par défaut eviter une jointure dans un group by
    Bonjour à tous,

    Resumé:
    Je dois créer une VIEW qui contient une hiérarchie (zone et continent sur la table sale) qui est représentée par 4 tables: sale (0,n)->(1) zone (0,n)->(1)sousContinent (0,n)->(1)continent.


    Je dois donc faire une jointure entre les 4 tables relié chaque fois par une ID unique.

    J'ai l'impression que le group by ne peut s'effectuer à cause de la table sous-continent, pourtant dans l'affichage je n'affiche aucun champ de cette table

    Est-ce que qqun a une idée

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    Pourriez-vous nous présenter une ébauche de la requête que vous tentez de mettre au point.
    Cela sera plus facile pour la faire évoluer.
    En précisant le SGBD que vous utilisez et sa version, les réponses proposées seront adaptées aux spécificités et limitations de celui-ci.
    Règles du forum Langage SQL à lire par tous

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 26
    Points : 22
    Points
    22
    Par défaut select oracle 9i
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    SELECT sale.period_dt "PERIOD_DT", 
      sale.period_sw "PERIOD_SW", 
      p.rgd_sell_price_bl "RGD_FLAG", 
      p.but_id "BUT_ID", 
      bu.nm "BU_NAME", 
      p.prf_id "PRF_ID", 
      prodfam.nm "FAMILY_NAME", 
      CASE 
        WHEN sale.but_id = '01' THEN 
          'All' 
        ELSE 
          p.prd_id 
        END "PRD_ID", 
      CASE 
        WHEN sale.but_id = '01' THEN 
          'All' 
        ELSE 
          product_desc.nm 
        END "PRODUCT_NAME", 
      cont.id "CONTINENT_ID", 
      cont.nm "CONTINENT_NAME", 
      NULL "ZONE_ID", 
      NULL "ZONE_NAME", 
      SUM(sale.can) "CAN", 
      SUM( 
        CASE 
          WHEN sale.but_id = '01' THEN sale.qty 
          ELSE sale.m2e 
          END) "VOLUME", 
      ROUND(decode(SUM( 
        CASE 
        WHEN sale.but_id = '01' THEN sale.qty 
        ELSE sale.m2e 
        END),   0,   0,  (SUM(sale.can) / SUM( 
        CASE 
        WHEN sale.but_id = '01' THEN sale.qty 
        ELSE sale.m2e 
        END))),   2) "ACTUAL_CAN_VOLUME", 
     ROUND((SUM(sale.bud_can) / SUM(sale.bud_qty)),   2) "BUD_CAN_VOLUME", 
     NULL "AVERAGE" --for the future 
    FROM sck_products p, 
      scr_but bu, 
      sck_sales sale, 
      scr_zones zones, 
      scr_subcontinents subcont, 
      scr_continents cont, 
      scr_prodfam prodfam, 
      scr_products product_desc 
    WHERE bu.id = p.but_id 
     AND p.but_id = sale.but_id 
     AND p.prc_id = sale.prc_id 
     AND p.prf_id = sale.prf_id 
     AND p.prd_id = sale.prd_id 
     AND sale.ZON_ID = zones.ID 
     
      AND subCont.ID = zones.SCT_ID 
     
      AND subCont.CON_ID = cont.ID 
     AND p.but_id = prodfam.but_id 
     AND p.prc_id = prodfam.prc_id 
     AND p.prf_id = prodfam.id 
     AND product_desc.id = p.prd_id 
     AND product_desc.but_id = p.but_id 
     AND product_desc.prc_id = p.prc_id 
     AND product_desc.prf_id = p.prf_id 
     --calculation 
    AND p.rgd_sell_price_bl = 'Y' 
    GROUP BY sale.period_dt, 
      sale.period_sw, 
      p.rgd_sell_price_bl, 
      p.but_id, 
      bu.nm, 
      p.prf_id, 
      prodfam.nm, 
      CASE 
        WHEN sale.but_id = '01' THEN 
          'All' 
        ELSE 
          p.prd_id 
        END, 
      CASE 
        WHEN sale.but_id = '01' THEN 
          'All' 
        ELSE 
          product_desc.nm 
        END, 
      cont.id, 
      cont.nm, 
      zones.ID , 
      zones.NM

Discussions similaires

  1. [AC-2007] Sélection d'une checkbox dans un groupe de controle.
    Par Tifriis dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/10/2010, 13h12
  2. Réponses: 5
    Dernier message: 17/04/2010, 07h56
  3. Réponses: 2
    Dernier message: 12/01/2008, 14h57
  4. Remplacer une jointure dans une requête DELETE
    Par lorant dans le forum Requêtes
    Réponses: 5
    Dernier message: 30/11/2006, 19h46
  5. [SQL] Optimiser une jointure dans PHP
    Par Invité dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 11/08/2006, 17h56

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