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 :

Problème de requête


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 19
    Points
    19
    Par défaut Problème de requête
    Bonjour,

    J'ai une table étudiant qui doit être reliée à une table module et à une table tuteur par une relation ternaire.
    De façon que chaque étudiant soit suivi par un tuteur pour un module donnée.

    J'ai donc créé une table étudiant avec son ID (et plusieurs autres informations). La table module avec l'ID...
    La table tuteur (ID, ...). Ainsi qu'une table Tutorat permettant de faire le lien entre toutes ces tables.

    Tutorat
    --------
    ID_TUT ID_MOD ID_ETU


    Le problème c'est quand j’exécute mes requêtes, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     " Select * From Tutorat Natural Join module "
    Ça marche sans problème mais dès que je mets la table etudiant, ça ne marche plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      " Select * From Tutorat Natural Join etudiant "

    Est ce que c'est un problème de clef étrangère ? Car même avec eux ça ne marche pas, sans eux non plus. Je n'arrive vraiment pas à comprendre... J'ai une autre table un peu similaire sans clef étrangère et ça marche. Le code est tout simple, mais je n'arrive pas à trouver une solution.

    Merci d'avance pour votre aide !

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

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

    http://sqlpro.developpez.com/cours/s...ntures/#LIII-A

    Ici vous n'avez pas les même noms pour faire votre jointure naturelle.

    Il faudrai à minima utiliser la clause USING (de mon point de vue) pour avoir du code claire.

    Sinon utilisez une jointure interne le résultat sera le même

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta réponse.

    Avec le Using ça ne marche pas, par contre avec un Inner Join ça marche, ce qui est plutôt bizarre, je suis obligée de reformuler ma requête comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM tutorat
    NATURAL JOIN tuteur
    NATURAL JOIN module
    INNER JOIN etudiant ON tutorat.ID_ETU = etudiant.ID_ETU

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    donnez le ddl de vos tables tutorat & etudiant

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Personnellement, je n'utilise jamais le NATURAL JOIN nio le USING. Je préfère écrire explicitement les conditions de jointure donc j'utilise toujours INNER JOIN (ou OUTER JOIN) ON condition de jointure.

    Quand il y a plus d'une jointure, ça permet de faciliter la lecture de la requête car on sait précisément quelle table est jointure avec quelle autre.

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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