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 :

Requête SQL relationnelle


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Requête SQL relationnelle
    Bonjour,

    Voici ma problématique, j'ai deux tables au format suivant :

    1ere Table: Licence|Nom|Prenom
    2eme Table : Eleve|Prof1|Prof2
    La deuxième table contient les numéro de licence et je souhaiterai faire une requete pour afficher les informations de la Table 2 avec Le prénom au lieu du numéro de licence

    Voici la requete que j'ai pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select b.Prenom as Eleve, a.initiateur1 as initiateur1, a.initiateur2 as initiateur2 FROM initiation a, archer b where b.Licence=a.eleve
    Pour la partie Elève j'ai bien le prénom au lieu du numéro de licence mais je n'arrive pas a faire pareil pour les initiateur1 et initiateur2.

    Mon résultat est :
    Axel|874521X|658214L
    Alors que je voudrais avoir :
    Axel|Jean|Maurice
    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 387
    Points
    28 387
    Par défaut
    Premièrement, une jointure s'écrit en utilisant l'opérateur JOIN .. ON et pas comme un produit cartésien avec une condition d'égalité.

    Ensuite, pour résoudre ton problème, il suffit de joindre autant de fois la table archer qu'il y a de relations sur celle-ci...

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Merci pour l'information, y a du mieux.

    J'ai les 3 requêtes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Prenom as Elève FROM initiation INNER JOIN archer ON archer.Licence=initiation.eleve;
    SELECT Prenom as Initiateur1 FROM initiation INNER JOIN archer ON archer.Licence=initiation.initiateur1 WHERE eleve in (SELECT eleve FROM `initiation`);
    SELECT Prenom as Initiateur1 FROM initiation INNER JOIN archer ON archer.Licence=initiation.initiateur2 WHERE eleve in (SELECT eleve FROM `initiation`);
    Elle fonctionne bien séparément mais je n'arrive pas a afficher le résultat voulu :


  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 387
    Points
    28 387
    Par défaut
    Tu peux utiliser plusieurs fois INNER JOIN dans la clause FROM et identifier les tables avec un alias comme tu l'avais fait dans la première requête.

  5. #5
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Premièrement, une jointure s'écrit en utilisant l'opérateur JOIN .. ON et pas comme un produit cartésien avec une condition d'égalité.
    Je plussoie!
    C'est assez hallucinant de voir que la norme SQL de 1992 n'est toujours pas enseignée correctement!

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Merci,

    J'ai mis la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT b.Prenom as Elève, c.Prenom as Initiateur1, d.Prenom as Initiateur2 FROM initiation a INNER JOIN archer b ON b.Licence=a.eleve INNER JOIN archer c ON c.Licence=a.initiateur1 INNER JOIN archer d ON d.Licence=a.initiateur2
    J'ai le bon résultat. Après je pense qu'on peux optimiser la requête.

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Arkhena Voir le message
    Je plussoie!
    C'est assez hallucinant de voir que la norme SQL de 1992 n'est toujours pas enseignée correctement!
    Alors pour information, c'est pas la faute aux profs, on ne m'a rien enseigné.
    Je suis un Chimiste qui s'est reconverti dans l'informatique après mes études (où la seul chose qu'on m'ai appris sur l'informatique c'est Excel et la base du C, vraiment base)

    Et travaillant dans la production informatique, j'ai pas l'habitude de programmer autre chose que du Shell.

    Voila voila

  8. #8
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Au temps pour moi et mes conclusions hâtives...

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

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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