Re: left outer join fails because "column .. does not exist in left table?"

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: left outer join fails because "column .. does not exist in left table?"
Дата
Msg-id 20468.1277942713@sss.pgh.pa.us
обсуждение исходный текст
Ответ на left outer join fails because "column .. does not exist in left table?"  (Rick.Casey@colorado.edu)
Ответы Re: left outer join fails because "column .. does not exist in left table?"  (Scott Marlowe <scott.marlowe@gmail.com>)
Список pgsql-general
Rick.Casey@colorado.edu writes:
> SELECT S.subjectid,STY.studyabrv,labID,boxnumber,wellrow,wellcolumn
> FROM DNASample D, IBG_Studies STY, Subjects S, ibg_projects P
>   LEFT OUTER JOIN ibg_ps_join IPJ USING (dnasampleid)
> WHERE
>     D.subjectidkey=S.id
>     AND STY.studyindex=D.studyindex
>     AND IPJ.projects_index=P.ibg_projects_index
> ORDER BY studyabrv,boxnumber,wellcolumn,wellrow
> ERROR:  column "dnasampleid" specified in USING clause does not exist in
> left table

> I am rather mystified by this, since this field is definitely in the
> dnasample table, as the primary key.

It appears you're used to mysql, which processes commas and JOINs
left-to-right (more or less, I've never bothered to figure out their
behavior exactly).  We follow the SQL standard, which says JOIN binds
tighter than comma.  Therefore, the left-hand argument of the JOIN is
only ibg_projects not the cross join of DNASample x IBG_Studies x
Subjects x ibg_projects.

You could probably get the behavior you're expecting by writing

... FROM (DNASample D CROSS JOIN IBG_Studies STY CROSS JOIN Subjects S
CROSS JOIN ibg_projects P) LEFT OUTER JOIN ibg_ps_join IPJ USING ...

Or it might be enough to rearrange to

... FROM DNASample D LEFT OUTER JOIN ibg_ps_join IPJ USING (dnasampleid),
IBG_Studies STY, Subjects S, ibg_projects P WHERE ...

            regards, tom lane

В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: Cannot open table in new database
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Cannot open table in new database