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 :

Rendre une requête select, join, union plus jolie !


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 141
    Par défaut Rendre une requête select, join, union plus jolie !
    Bonjour,

    j'ai cette requête avec plusieurs jointures et qui contient plusieurs select,j'ai utilisé "UNION" pour faire ça et je me demandais s'il y'avait moyen d'enlever les plusieurs select et l'union et avoir un simple select ?
    je sais pas rendre ça plus 'pro'..
    merci d'avance !
    voici ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    select A.libellé from table1 A LEFT OUTER JOIN table2 B ON A.id=B.id WHERE B.cl1='CLI' and B.cl2=165 UNION select A.libellé from table3 A LEFT OUTER JOIN table4 B ON A.id=B.id where B.cl3= 'AAB' and B.cl2=165 and B.cl4 = 'A8Y' UNION select A.libellé from table5 A LEFT OUTER JOIN table6 B ON A.id=B.id where  B.cl2=165 and B.cl5 = 'DUPOND'

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,

    Combien de table différente avez vous réellement ?

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Déjà un peu de mise en page, c'est tellement plus lisible (tout mettre sur une ligne, avez-vous au moins essayé de relire ?) :
    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
    SELECT A.libellé
      FROM table1 A
           LEFT OUTER JOIN table2 B
             ON A.id = B.id
     WHERE B.cl1 = 'CLI'
       AND B.cl2 = 165
     UNION
    SELECT A.libellé
      FROM table3 A
           LEFT OUTER JOIN table4 B
             ON A.id = B.id
     WHERE B.cl3 = 'AAB'
       AND B.cl2 = 165
       AND B.cl4 = 'A8Y'
     UNION
    SELECT A.libellé
      FROM table5 A
           LEFT OUTER JOIN table6 B
             ON A.id = B.id
     WHERE B.cl2 = 165
       AND B.cl5 = 'DUPOND'
    Sur le fond de la requête, comme il a l'air de s'agir de tables différentes avec des filtres différents, je ne pense pas que ce soit synthétisable.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 141
    Par défaut
    oui enfait c'est sur plusieurs tables..
    donc c'est le mieux que je puisse faire ?! :-/

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 141
    Par défaut
    En fait, le problème avec cette manière est que quand j'essaye de récupérer le résultat de la requête (côté java ), il considère que les 3 lignes sélectionnées sont celles de la première colonne et non 3 colonnes distinctes..

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    rajoutez une constante pour vous y retrouver du coté du code java.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT A.libellé, 0 as niveau
      FROM table1 A
           LEFT OUTER JOIN table2 B
             ON A.id = B.id
     WHERE B.cl1 = 'CLI'
       AND B.cl2 = 165
     UNION
    SELECT A.libellé, 1 as niveau
    ...

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/09/2008, 10h04
  2. [MySQL 5]Performance d'une requêtes select
    Par SuperCed dans le forum Requêtes
    Réponses: 8
    Dernier message: 01/08/2006, 12h51
  3. une requête SELECT INTO provoque un plantage sous Access
    Par Invité dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 29/12/2005, 11h35
  4. fusion de 2 colonnes dans une requête select?
    Par epeichette dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/11/2005, 23h05
  5. C'est possible dans une requête SELECT ?
    Par Kokito dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2005, 16h59

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