71 votes

La référence de la colonne "id" de Postgresql est ambiguë.

J'ai essayé la sélection suivante :

SELECT (id,name) FROM v_groups vg 
inner join people2v_groups p2vg on vg.id = p2vg.v_group_id
where p2vg.people_id =0;

et j'obtiens la référence de colonne d'erreur suivante id est ambiguë.

Le truc c'est que si j'essaie la même chose SELECT mais je ne demande que name et non pour id également, cela fonctionne. Je suis novice en la matière et peut-être que quelque chose d'évident m'échappe. Avez-vous des suggestions ?

Merci.

13 votes

Dès que vous avez plus d'un tableau dans votre déclaration, vous devez toujours préfixez vos noms de colonnes avec l'alias de table correspondant. De cette façon, vous n'obtiendrez jamais cette erreur.

0 votes

Ce problème se produit en fait lorsqu'il y a le même nom de colonne dans les deux tables. où <tableName.columnName> = <value> peut résoudre ce problème.

105voto

JScoobyCed Points 4232

Vous avez besoin du nom de la table/alias dans le fichier SELECT partie (peut-être (vg.id, name) ) :

SELECT (vg.id, name) FROM v_groups vg 
inner join people2v_groups p2vg on vg.id = p2vg.v_group_id
where p2vg.people_id =0;

11voto

dweeves Points 3326

Je suppose que votre table p2vg a aussi un champ id, dans ce cas, postgres ne peut pas trouver si l'id dans la table p2vg est un champ d'identification. SELECT fait référence à vg ou p2vg.

vous devez utiliser SELECT(vg.id,vg.name) pour lever toute ambiguïté

2 votes

Oui, en fait, le champ ID est en double.

5voto

Janaki Points 167
SELECT (vg.id, name) FROM v_groups vg 
INNER JOIN people2v_groups p2vg ON vg.id = p2vg.v_group_id
WHERE p2vg.people_id = 0;

1voto

Alex Mack Points 21
SELECT vg.id, 
       vg.name
  FROM v_groups vg INNER JOIN  
       people2v_groups p2vg ON vg.id = p2vg.v_group_id
 WHERE p2vg.people_id = 0;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X