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

PL/SQL Oracle Discussion :

PL/SQL requete avec UNION


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Points : 64
    Points
    64
    Par défaut PL/SQL requete avec UNION
    J'ai une requete que j'ai testé sous TOAD, elle me renvoit les bon résultats. Mais une fois que je m'en sert dans ma procédure PL/SQL, elle ne me renvoit plus les bons résultats. Est ce du aux jointures ouvertes et à l'UNION ???

    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
     
     
      -- si le trinôme code chaîne, code chantier et code établissement (ch_code, ct_code et et_code de TMP_CHANTIER) 
        -- existent dans la table COMPOSITION_CHAINE (via id_chaine, id_chantier_directuer, id_ca et id_ctc)
     
        select tcc.ch_code,
               tcc.ct_code,
               tcc.et_code,
               ch.id_chaine,
          	   ca.id_ca,
          	   cd.id_chantier_directeur,
          	   c.id_ctc
        from tmp_composition_chaine tcc, composition_chaine cc, chaine ch, chantier_annexe ca, chantier_directeur cd, ctc c, tmp_chantier tc
        where tc.ct_code = tcc.ct_code      
          and tcc.ch_code = ch.code_chaine and ch.id_chaine = cc.id_chaine 
          and cc.date_fin is null
          and ca.date_fin is null
          and cd.date_fin is null
          and ch.date_fin is null
          and c.date_suppression is null
          and tcc.ct_code = ca.code_ca(+) 
          and ((ca.id_ca is not null and ca.id_ca = cc.id_ca) or (ca.id_ca is null))     
          and tcc.ct_code = cd.code_cd(+) 
          and ((cc.id_chantier_directeur is not null and cd.id_chantier_directeur = cc.id_chantier_directeur) or (cd.id_chantier_directeur is null))
          and ( tcc.et_code = c.code_ctc and c.id_ctc = cc.id_ctc )  
     
        UNION 
        -- si le trinôme code chaîne, code chantier et code établissement (ch_code, ct_code et et_code de TMP_CHANTIER) 
        -- n'existent pas dans la table COMPOSITION_CHAINE (via id_chaine, id_chantier_directuer, id_ca et id_ctc)
        select tcc.ch_code,
               tcc.ct_code,
               tcc.et_code,
               ch.id_chaine,
          	   ca.id_ca,
          	   cd.id_chantier_directeur,
          	   c.id_ctc
        from tmp_composition_chaine tcc, tmp_chantier tc, ctc c, chantier_directeur cd, chantier_annexe ca, chaine ch
        where tcc.et_code = c.code_ctc
          and tc.ct_code = tcc.ct_code
          and c.date_suppression is null
          and ca.date_fin is null
          and cd.date_fin is null
          and ch.date_fin is null
          and tcc.ct_code = ca.code_ca(+) 
          and tcc.ct_code = cd.code_cd(+) 
          and tcc.ch_code = ch.code_chaine
              -- ch_code (TMP_COMPOSITION_CHAINE) est présent dans la table TMP_CHAINE
          and tcc.ch_code in (select ch_code from tmp_chaine tch where tch.ch_code = tcc.ch_code)
              -- ct_code (TMP_COMPOSITION_CHAINE) est présent dans la table TMP_CHANTIER
          and tcc.ct_code in (select ct_code from tmp_chantier tc where tc.ct_code = tcc.ct_code)
              -- si ct_type_local (TMP_CHANTIER) du ct_code de TMP_COMPOSITION_CHAINE est égale à 'D', co_fl_amont_aval 
              -- (TMP_COMPOSITION_CHAINE) est égale à 'D'
          and tc.ct_type_local = tcc.co_fl_amont_aval
          and tcc.co_no_ordre is not null 
          and tcc.co_coeff_bcl is not null

    Comment faire pour rendre cette requete utilisable en PL/SQL??

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    tu as un message d'erreur?

    L'outil ne change pas le résultat donc le résultat est le même.
    il se peux par contre que sa présentation soit différente, car la c'est l'outil qui paramètre cela par défault(évidement, tu peux le changer)

  3. #3
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Es tu sûr que la base est la même ou l'utilisateur a les mêmes droits ...

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Cela dépend de la façon dont vous vous en servez en PL/SQL....

    Etant donné qu'en PL/SQL un SELECT ne peut être lancé tel quel -soit SELECT INTO, soit un curseur -, la différence se situe vraissemblablement de ce côté plus que du côté du moteur Oracle ! ;-)

    Ceci étant, si au lieu de lancer votre SELECT sous Toad, vous le lancez sous SQL*Plus, vous obtenez quoi ? (parce que si ça se trouve, c'est Toad qui fausse les résultas !)

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

Discussions similaires

  1. [SQL] Requete avec ordre correspondant à la clause WHERE
    Par yobogs dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/06/2007, 15h32
  2. [MySQL] Construction de requête avec UNION
    Par kunchovich dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/07/2006, 20h40
  3. [SQL] Requête avec "valeur si null"
    Par metalcoyote dans le forum Oracle
    Réponses: 3
    Dernier message: 19/04/2006, 11h22
  4. [SQL]Requete avec 2 count(*) sur la même table
    Par Sonny dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/11/2005, 17h41
  5. Pb requete avec union et colonne maximale
    Par Karibou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/09/2005, 12h53

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