Re: wrong query result - Mailing list pgsql-general

From Albe Laurenz
Subject Re: wrong query result
Date
Msg-id D960CB61B694CF459DCFB4B0128514C201FA5AA5@exadv11.host.magwien.gv.at
Whole thread Raw
In response to wrong query result  ("josep porres" <jmporres@gmail.com>)
List pgsql-general
josep porres wrote:
> select clau, lecact-lecant as m3, m3any, ta, tc, 3 as mesos, persones, true as clavegueram
> from fac_abonats
> where clau in (select clau from tmp_claus_prova)
> order by clau
>
> the thing is that the result of the query returns the same
> number of rows as the table fac_abonats (thousands).

[...]

> At the end I've realized that there is no column named
> 'clau'. It has another name.
> So the subselect query is wrong, if I execute it alone, an
> error appears
>
> ERROR:  no existe la columna «clau»
> LINE 6: select clau from tmp_claus_prova
>                ^
> ********** Error **********
>
> ERROR: no existe la columna «clau»
> Estado SQL:42703
> Caracter: 188
>
> The question is:
> Is it a normal behaviour? Because I think that if the query
> is wrong, wouldn't be better to raise an error?

Yes, this is normal behaviour.
The query is syntactically correct, it just doesn't do what you intended.

It will do the same as:

select clau, lecact-lecant as m3, m3any, ta, tc, 3 as mesos,
       persones, true as clavegueram
from fac_abonats
where 42 in (select 42 from tmp_claus_prova)
order by clau

except probably less efficiently.

Yours,
Laurenz Albe

pgsql-general by date:

Previous
From: "Dave Page"
Date:
Subject: Re: Debugging Pl/PgSQL functions with the debug contrib module
Next
From: "Albe Laurenz"
Date:
Subject: Re: select statement fails