Thread: JOIN chaining not working in 7.1 beta 3

JOIN chaining not working in 7.1 beta 3

From
"Josh Berkus"
Date:
Tom, Stephen,
I'm trying to parse a query like the following and keep
getting various errors (I'd give you the real query but
&%^$# Netscape won't do cut-and-paste):

SELECT a.1, b.2, c.14, a.2, c.5
FROM a INNER JOIN b ON a.1=b.3LEFT OUTER JOIN c on a.1=c.2;

And I get:
ERROR: JOIN/ON CLAUSE REFERS TO 'c' WHICH IS NOT PART OF
JOIN.

What's wrong here?

-Josh Berkus



______AGLIO DATABASE SOLUTIONS___________________________                                      Josh Berkus Complete
informationtechnology      josh@agliodbs.com  and data management solutions       (415) 565-7293 for law firms, small
businesses       fax 621-2533   and non-profit organizations.      San Francisco
 


Re: JOIN chaining not working in 7.1 beta 3

From
Tom Lane
Date:
"Josh Berkus" <josh@agliodbs.com> writes:
> And I get:
> ERROR: JOIN/ON CLAUSE REFERS TO 'c' WHICH IS NOT PART OF
> JOIN.
> What's wrong here?

I don't believe you transcribed your query accurately.
My attempt to replicate the complaint works fine:

nic=# create table a (one int, two int);
CREATE
nic=# create table b (two int, three int);
CREATE
nic=# create table c (two int);
CREATE
nic=# select a.one, b.two, c.two
nic-# FROM a INNER JOIN b ON a.one = b.three
nic-# LEFT OUTER JOIN c on a.one = c.two;one | two | two
-----+-----+-----
(0 rows)

I can get the same error message with:

nic=# select a.one, b.two, c.two
nic-# FROM a INNER JOIN b ON a.one = c.two
nic-# LEFT OUTER JOIN c on a.one = c.two;
NOTICE:  Adding missing FROM-clause entry for table "c"
ERROR:  JOIN/ON clause refers to "c", which is not part of JOIN

which is correct since the a/b join should have a join condition
that refers only to a and b.
        regards, tom lane