Re: Bad error message

Поиск
Список
Период
Сортировка
От Gurjeet Singh
Тема Re: Bad error message
Дата
Msg-id 65937bea0809301936m8c7a73cu8a70b56ff8f5a42@mail.gmail.com
обсуждение исходный текст
Ответ на Bad error message  (Decibel! <decibel@decibel.org>)
Ответы Re: Bad error message  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On Wed, Oct 1, 2008 at 3:07 AM, Decibel! <decibel@decibel.org> wrote:
>From -HEAD:

ERROR:  aggregates not allowed in WHERE clause
STATEMENT:  SELECT *
               FROM loans l
               WHERE id IN (   SELECT max(l.id)
                                   FROM loans
                                       JOIN customers c ON c.id = l.customer_id
                                       JOIN people p ON p.id = c.person_id
                                   WHERE p.first_name = 'Test person'
                                   GROUP BY l.loan_type_cd
                           )
       ;

The real issue is this:

ERROR:  missing FROM-clause entry for table "l" at character 132
STATEMENT:  SELECT max(l.id)
                                           FROM loans
                                               JOIN customers c ON c.id = l.customer_id
                                               JOIN people p ON p.id = c.person_id
                                           WHERE p.first_name = 'Test person'
                                           GROUP BY l.loan_type_cd;

And if I change the FROM loans to be FROM loans l, the original select does work fine.

Let me know if I need to create a full test case for this...

No, the real issue is that you are referencing the outer table's column's max() in the inner query (correlated sub-query). The table in the outer query is aliased 'l' and the sub-query is trying to aggregate that, which is in the outer query's WHERE clause; and that is not allowed.

Renaming the outer query's alias to something other than 'l' would show you the real error (which again would be 'missing FROM-clause entry).

Best regards,
--
gurjeet[.singh]@EnterpriseDB.com
singh.gurjeet@{ gmail | hotmail | indiatimes | yahoo }.com

EnterpriseDB      http://www.enterprisedb.com

Mail sent from my BlackLaptop device

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

Предыдущее
От: Andrew Chernow
Дата:
Сообщение: Re: Block-level CRC checks
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Common Table Expressions (WITH RECURSIVE) patch