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 :

priorité des opérateurs


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut priorité des opérateurs
    Bonjour,

    A propos des opérateurs ensemblistes, j'apprends que l'opérateur IN a une priorité plus élevée que l'opérateur UNION.
    Cela signifie t-il que Oracle évalue une clause IN avant une clause avec l'opérateur UNION?

    J'ai simplement besoin d'une confirmation.

    Merci à vous.
    Cordialement.
    Nathalie

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    bien entendu... IN c'est un opérateur permettant de restreindre un ensemble alors que UNION additionne les ensembles... tu peux pas faire le 2° sans avoir fait le 1° c'est logique

  3. #3
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Désolé pour mon intervention, mais toute simplement je n'arrive pas à l'avoir .
    Dans la documentation d'Oracle (SQL Reference – version 9) je trouve seulement les opérateurs UNION [ALL], INTERSECT et MINUS comme opérateurs d'ensemble (set operators). Je ne trouve pas l'opérateur IN dans cette catégorie et bien ni dans la partie sur l'ordre de priorités de ces opérateurs.
    Pourriez-vous SVP me montrer avec un exemple comment cette priorité plus élevé est prise en compte (ou si j'ai raté quelque chose ...)

  4. #4
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Par défaut
    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * 
    FROM employes
    WHERE lieu_de_travail IN (SELECT nom_de_ville
                                        FROM sites
                                        WHERE REGION = 'Normandie' )
    UNION
    SELECT * 
    FROM employes
    WHERE service = 'RH'
    Oracle va résoudre ton premier SELECT (avec la clause IN) ainsi que le SELECT qui est derrière ta clause UNION avant de concaténer les deux résultats (effet de l'UNION).
    Voilà pourquoi tu peux dire que l'opérateur IN est prioritaire à l'opérateur UNION.

    Mais sinon c'est effectivement assez bizarre de comparer les priorité entre un IN et un UNION puisqu'ils ne s'utilisent pas vraiment de la même façon. l'un s'utilise dans une clause WHERE/AND et l'autre non.

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par dyvim Voir le message
    Un exemple :
    Mais sinon c'est effectivement assez bizarre de comparer les priorité entre un IN et un UNION puisqu'ils ne s'utilisent pas vraiment de la même façon. l'un s'utilise dans une clause WHERE/AND et l'autre non.
    On est d'accord!

  6. #6
    Membre extrêmement actif
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Billets dans le blog
    6
    Par défaut
    Salem
    je ne suis pas d'accord:

    si on inverse les deux requete qu'est ce qui se passera???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT * 
    FROM employes
    WHERE service = 'RH'
     
    UNION
     
    SELECT * 
    FROM employes
    WHERE lieu_de_travail IN (SELECT nom_de_ville
                                        FROM sites
                                        WHERE REGION = 'Normandie' )
    Bon courage

    Zoheir BOUSSAFI

Discussions similaires

  1. priorité des opérateurs
    Par new_wave dans le forum Langage
    Réponses: 3
    Dernier message: 02/12/2008, 12h09
  2. Priorité des opérateurs % et ++
    Par G3G3 dans le forum Débuter
    Réponses: 16
    Dernier message: 12/02/2008, 09h40
  3. [OCaml & F#] Priorité des opérateurs
    Par SpiceGuid dans le forum Caml
    Réponses: 7
    Dernier message: 01/01/2008, 15h00
  4. Priorité des opérateurs
    Par neuromencien dans le forum Langage
    Réponses: 3
    Dernier message: 14/05/2007, 17h06
  5. Réponses: 3
    Dernier message: 31/08/2006, 10h39

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