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

Oracle Discussion :

[Oracle 10g] Question sur les sous-requetes


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 44
    Points : 42
    Points
    42
    Par défaut [Oracle 10g] Question sur les sous-requetes
    Bonjour,
    J'utilise Oracle 10g et je suis en train de faire une requête relativement compliquée mais je suis bloqué à un point. Je le résume ici. C'est un exemple débile au niveau du sens des requêtes imbriqués car on se répète mais qui illustre bien mon problème.
    Rassurez vous, dans ma requête, je n'ai pas ce genre de répétition.

    Pour une requête du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT age FROM (
             SELECT * FROM employes WHERE age > 25
    )
    WHERE
              age > (SELECT * FROM employes WHERE age > 25)
    AND
              age > (SELECT * FROM employes WHERE age > 25)
    Ma question est la suivante : Comment faire pour éviter d'effectuer à chaque fois cette sous-requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM employes WHERE age > 25
    ?

    Pour les cheveronnés , voici ma requête :
    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
     
    SELECT SUM(rec.LONGUEUR) FROM G_REC rec, (
    SELECT ID_STRUCTURE FROM (
    	SELECT rownum AS numero, structure.*, rang
    	FROM g_structures structure
    	START WITH structure.id_structure_pere = 0 CONNECT BY structure.id_structure_pere = PRIOR structure.id_structure ORDER SIBLINGS BY structure.rang
    ) resultats
    WHERE numero >= 
    	( SELECT numero2 FROM 
    			(SELECT rownum AS numero2, structure.*, rang
    			FROM g_structures structure
    			START WITH structure.id_structure_pere = 0 CONNECT BY structure.id_structure_pere = PRIOR structure.id_structure ORDER SIBLINGS BY structure.rang)
    	  WHERE ID_STRUCTURE = 159138)
    AND numero <= 
    	( SELECT numero2 FROM 
    			(SELECT rownum AS numero2, structure.*, rang
    			FROM g_structures structure
    			START WITH structure.id_structure_pere = 0 CONNECT BY structure.id_structure_pere = PRIOR structure.id_structure ORDER SIBLINGS BY structure.rang)
    	  WHERE ID_STRUCTURE = 159140)) structures
    WHERE rec.ID_STRUCTURE = structures.ID_STRUCTURE
    On voit bien ici que l'on repête la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT rownum AS numero2, structure.*, rang
    FROM g_structures structure
    START WITH structure.id_structure_pere = 0 CONNECT BY structure.id_structure_pere = PRIOR structure.id_structure ORDER SIBLINGS BY structure.rang
    3 fois et vu que c'est un traitement pour un arbre, c'est plutôt long d'où ma question.

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WITH my_req AS (
    SELECT * FROM employes WHERE age > 25)
    SELECT age FROM my_req
    WHERE
              age > (select * from my_req)
    and 
     
              age > (select * from my_req)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 44
    Points : 42
    Points
    42
    Par défaut
    J'allais poster un message comme quoi j'avais trouvé. C'est effectivement très simple.
    Merci quand même !
    A bientôt

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

Discussions similaires

  1. Oracle 10g : Question sur un MERGE
    Par eryk71 dans le forum SQL
    Réponses: 5
    Dernier message: 06/04/2012, 10h41
  2. question sur les sous réseaux
    Par Balbuzard dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 17/11/2008, 21h13
  3. Question sur une sous requete
    Par Jean-Pierre49 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/03/2008, 12h19
  4. Oracle 10g - calcul sur les dates
    Par themateo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/08/2007, 10h50
  5. Encore une question sur les Sous-Forums
    Par Swoög dans le forum Evolutions du club
    Réponses: 12
    Dernier message: 27/05/2006, 02h17

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