UNION bug in 7.1.3?
The following syntax, which works fine in 7.0.3, fails in 7.1.3:
SELECT t1.col1, t2.col2 FROM table1 t1, table2 t2
WHERE t1.col3 = t2.col4
UNION
SELECT t1.col1, NULL FROM table1 t1
WHERE t1.col3 NOT IN (SELECT t2.col2 FROM table2 t2)
ORDER BY t1.col1
Fails with "ERROR: Relation 't1' does not exist".
It seems to be in the "order by" clause. So, if I do:
SELECT t1.col1, t2.col2 FROM table1 t1, table2 t2
WHERE t1.col3 = t2.col4
UNION
SELECT t1.col1, NULL FROM table1 t1
WHERE t1.col3 NOT IN (SELECT t2.col2 FROM table2 t2)
ORDER BY table1.col1
The above error goes away, but is replaced by "ERROR: ORDER BY on a
UNION/INTERSECT/EXCEPT result must be on one of the result columns". Is this
a bug? It doesn't even work when using full table names instead of aliases.
Of course, I can do an outer join without any problem, but I have other
cases where I am doing unions, the above just seems to be the most
explicative example.
Keary Suska
Esoteritech, Inc.
"Leveraging Open Source for a better Internet"
On Mon, 22 Oct 2001, Keary Suska wrote:
The following syntax, which works fine in 7.0.3, fails in 7.1.3:
SELECT t1.col1, t2.col2 FROM table1 t1, table2 t2
WHERE t1.col3 = t2.col4
UNION
SELECT t1.col1, NULL FROM table1 t1
WHERE t1.col3 NOT IN (SELECT t2.col2 FROM table2 t2)
ORDER BY t1.col1Fails with "ERROR: Relation 't1' does not exist".
It seems to be in the "order by" clause. So, if I do:
SELECT t1.col1, t2.col2 FROM table1 t1, table2 t2
WHERE t1.col3 = t2.col4
UNION
SELECT t1.col1, NULL FROM table1 t1
WHERE t1.col3 NOT IN (SELECT t2.col2 FROM table2 t2)
ORDER BY table1.col1The above error goes away, but is replaced by "ERROR: ORDER BY on a
UNION/INTERSECT/EXCEPT result must be on one of the result columns". Is this
a bug? It doesn't even work when using full table names instead of aliases.
I think an ORDER BY col1 will do what you want, since ISTM col1 is the
column name in the query expression of the select union select.
On Mon, 22 Oct 2001, Keary Suska wrote:
The following syntax, which works fine in 7.0.3, fails in 7.1.3:
SELECT t1.col1, t2.col2 FROM table1 t1, table2 t2
WHERE t1.col3 = t2.col4
UNION
SELECT t1.col1, NULL FROM table1 t1
WHERE t1.col3 NOT IN (SELECT t2.col2 FROM table2 t2)
ORDER BY t1.col1The above error goes away, but is replaced by "ERROR: ORDER BY on a
UNION/INTERSECT/EXCEPT result must be on one of the result columns".
Is this
a bug? It doesn't even work when using full table names instead of
aliases.
This is not a bug. Use aliases instaed or use the position number of the
column in the order by clause. Ex. ORDER BY 1
Regards
Herbie
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Herbert Liechti http://www.thinx.ch
ThinX networked business services Adlergasse 5, CH-4500 Solothurn
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Import Notes
Resolved by subject fallback