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