Ссылка на столбец Postgresql "id" неоднозначна - PullRequest
41 голосов
/ 22 марта 2012

Я попробовал следующий выбор:

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

и я получаю следующую ссылку на столбец ошибки "id" является неоднозначным.

Дело в том, что если я пытаюсь сделать то же самое, но спрашиваю только (имя), но не идентификатор, это работает. Я новичок в этом и, возможно, я упускаю что-то очевидное. Какие-либо предложения?

Спасибо.

Ответы [ 4 ]

54 голосов
/ 22 марта 2012

Вам нужно имя таблицы / псевдоним в части SELECT (может быть (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;
5 голосов
/ 22 марта 2012

Полагаю, ваша таблица p2vg также имеет поле id, в этом случае postgres не может найти, относится ли идентификатор в SELECT к vg или p2vg.

Вы должны использовать SELECT(vg.id,vg.name) для устранения двусмысленности

3 голосов
/ 22 марта 2012
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;
0 голосов
/ 25 сентября 2017
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;
...