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 :

Utilisation des jointures


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Par défaut Utilisation des jointures
    Bonjour,

    Je m'entraîne pour un concours et je suis tombée sur cette question :


    Nom : Question27-R&T-IESSA2015.png
Affichages : 335
Taille : 41,9 Ko

    La formulation des jointures est la suivante :
    SELECT *
    FROM A JOIN B ON A.idA=B.idA
    avec JOIN qui est adapté à la situation (INNER, FULL OUTER,...)

    Est-ce que cette formulation implique que le JOIN se trouve dans le FROM, et donc que la réponse b. est vraie ?

    On peut également utiliser WHERE pour réaliser des jointures, mais est-ce que selon vous, la question est formulée dans ce sens ?

    D'instinct, j'aurais tendance à répondre a. et c.

    Merci de toute aide que vous pourrez m'apporter.

    Bien cordialement,

    F.R.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 779
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 779
    Billets dans le blog
    10
    Par défaut
    C'est le genre de question piégeuse.
    Effectivement, il n'y a pas de JOINsans FROM, de là à dire qu'on code (plutôt que programme) la jointure dans le FROM, je ne pense pas qu'on puisse le dire
    Donc comme vous A et C
    Bien évidemment, la jointure codée à l'ancienne dans le WHERE n'est pas recommandée et elle est incompatible avec les jointures externes.

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 578
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 578
    Par défaut
    Bonjour,
    Pour ma part j'interprète le choix B comme l'écriture qu'on voit passer régulièrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select x
    from Table1,Table2
    where table1.colx = table2.coly
    Vu que la capture d'écran ressemble fort à un exercice, et que certains profs on du mal avec le JOIN...
    Donc j'élimine le B

    J'éliminerai le C car les critères de jointure doivent se trouver dans la clause JOIN. S'ils sont dans la clause WHERE, ça "implique" que la jointure est dans la clause FROM, donc que le choix B est valide.
    Comme je l'ai écarté C, j'écarte de facto B.

    D et E se passent de commentaire

    Tatayo.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 779
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 779
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Pour ma part j'interprète le choix B comme l'écriture qu'on voit passer régulièrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select x
    from Table1,Table2
    where table1.colx = table2.coly
    Pour moi, cette syntaxe c'est plutôt la réponse C : le from fait le produit cartésien et les critères de jointures sont dans la clause WHERE
    Mais bon, encore une fois, la question est piégeuse
    Il serait plus intéressant de demander les différentes façon de coder les jointures, et là, le candidat pourrait explicitement les citer en donnant des exemples, sans tomber dans les pièges liés à l'interprétation de la question.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Par défaut
    Bonjour,

    Merci à tous pour vos réponses.

    Ce n'est pas un exercice, c'est un extrait de l'annale 2016 du concours IESSA. Certaines de leurs questions sont piégeuses, comme le dit escartefigue.

    La réponse c. doit être valide car on utilise WHERE pour certaines formulations de JOIN, par exemple quand on veut exclure l'intersection des deux tables : WHERE A.idA IS NULL.

  6. #6
    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 : 48
    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
    Citation Envoyé par escartefigue Voir le message
    Bien évidemment, la jointure codée à l'ancienne dans le WHERE n'est pas recommandée et elle est incompatible avec les jointures externes.
    Heureusement (pour nos seniors) c'est faux, le JOIN étant arrivé dans la norme SQL:92, les SGBDR savaient faire des jointures externes bien avant cela.
    • Sur Oracle : where a.id = b.id(+)
    • Sur Sybase (et SQL-Server 2000) : where a.id *= b.id

    Pour la petite histoire Oracle converti toujours la syntaxe OUTER JOIN en WHERE (+) pour l'exécution de la requête en interne.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/03/2010, 19h05
  2. Utiliser des ALIAS de colonnes dans une jointure
    Par mbzhackers dans le forum SQL
    Réponses: 4
    Dernier message: 31/03/2008, 10h27
  3. Utilisation des Jointures Conditionnées
    Par Imad_ing dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 12/12/2007, 09h35
  4. requête utilisant les jointures et des UDT
    Par dingoth dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 25/04/2006, 16h22
  5. Peut on utiliser OR avec des jointures de tables??
    Par gins06 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/10/2005, 12h40

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