Partage
  • Partager sur Facebook
  • Partager sur Twitter

[help][SQL/PHP] Erreur colonne ambigüe

Sujet résolu
    18 mai 2018 à 13:25:16

    Bonjour,

    Je débute sur SQL et possède trois tables : etudiants (id, nom, prenom), UV (idcours, intitule) et une table rel_insc (id, idcours).

    Je souhaiterais pouvoir afficher les inscriptions des étudiants (leur nom, prenom, idcours et intitule) grâce au contenu de rel_insc.

    Mon code PHP pour la requête SQL est le suivant :

    $query = "SELECT nom, prenom, idcours, intitule FROM etudiants, uvs, rel_insc WHERE etudiants.idetu=rel_insc.idetu AND uvs.idcours=rel_insc.idcours";

    J'ai cherché sur internet des solutions, comme renommer idcours qui s'appelait avant code, reconnu comme une fonction par SQL ou préciser la table pour trouver idcours mais à chaque fois, SQL me renvoie l'erreur suivante :

    Impossible d'exécuter la requête:Column 'idcours' in field list is ambiguous

    Alors que la requête fonctionne si je demande uniquement nom, prénom et intitule.

    Pourriez-vous m'aider, ou du moins m'expliquer mon erreur ?

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2018 à 13:45:16

      Bonjour,

      PierreLRC a écrit:

      Column 'idcours' in field list is ambiguous

      L'erreur, même si en anglais, est assez explicite ... la colonne idcours est ambiguë ...

      Pourquoi ? Parce que deux tables de ta clause FROM ont une colonne nommé idcours ... uvs et rel_insc ...

      La solution est de préciser, à chaque endroit où tu utilises une colonne ambiguë, dans quelle table la trouver comme tu l'as si bien fait dans tes conditions de jointures ...

      Je te conseille au passage de toujours préciser la table même si il n'y a pas ambiguïté, ainsi jamais de doute.

      De plus je te conseille l'utilisation des alias (noms de remplacement) pour éviter de réécrire à chaque tout le nom de tes tables.

      Enfin, si tu débutes en SQL je te conseille d'utiliser les jointures explicites (avec JOIN) plus modernes, plus lisibles et plus souples à utiliser.

      Au final ta requête serait :

      SELECT
      	E.nom,
      	E.prenom,
      	U.idcours,
      	U.intitule
      FROM
      	etudiants E
      		INNER JOIN rel_insc EU
      			ON E.idetu = EU.idetu
      		INNER JOIN uvs U
      			ON EU.idcours = U.idcours
      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

      [help][SQL/PHP] Erreur colonne ambigüe

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown