You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by Dy...@Sun.COM on 2006/08/18 09:31:00 UTC
Re: LEFT JOIN with a subquery not working in Derby?
"Halit M. Maner" <hm...@maner.net> writes:
> The statement below has been working fine in Cloudscape 5.1 but it is not working in Derby (we are using 10.1.2.4).
>
> ij> SELECT * FROM admapphdr LEFT JOIN admappdtl ON (aah_id=aad_aah_id AND
> aad_seq_num = (SELECT MAX(a2.aad_seq_num) FROM admappdtl a2));
>
> It is throwing:
>
> ERROR 42972: An ON clause associated with a JOIN operator is not valid.
>
> It works fine if we remove the SELECT MAX (but we need it!)...
>
> admapphdr is a header table with an INTEGER id.
> admappdtl is admapphdr's detail table with the same id plus a sequence number for the various detail rows...
>
> Is this a limitation of Derby or are we overlooking something?
Sorry about the late reply. You probably have found a workaround by
now.
Couldn't you just perform the 'select MAX' first, and insert the
value in your join condition? (A pain, I know...)
In the general case where the sub-query returns multiple rows, you
could create a view of the sub-query, and then join
the two tables with this view in a three-way join.
--
dt
However, experience shows that for many people and many applications a
dose of paranoia is reasonable - Bjarne Stroustrup