web-dev-qa-db-fra.com

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

J'ai essayé le select suivant:

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 fait est que si j'essaie la même sélection mais que je ne demande que (nom), et non pas l'identifiant également, cela fonctionne. Je suis nouveau dans ce domaine et peut-être me manque-t-il quelque chose d'évident. Aucune suggestion?

Merci.

43
Fofole

Vous avez besoin du nom de la table/alias dans la partie SELECT (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;
56
JScoobyCed

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

vous devriez utiliser SELECT(vg.id,vg.name) pour lever l'ambiguïté

5
dweeves
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;
4
Janaki
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;
1
Alex Mack