Re: RE: Referencing named attribute in where clause doesn't work with7.1.2? - Mailing list pgsql-sql

From Andreas Joseph Krogh
Subject Re: RE: Referencing named attribute in where clause doesn't work with7.1.2?
Date
Msg-id 3B714F82.D8912EEE@officenet.no
Whole thread Raw
In response to RE: Referencing named attribute in where clause doesn't work with 7.1.2?  (Jeff Eckermann <jeckermann@verio.net>)
List pgsql-sql
Jeff Eckermann wrote:
> 
> The WHERE clause is evaluated before your SELECT list is determined, so the
> aliased value cannot be used.
> You can put further NOT NULL tests into the subqueries to make sure that
> null values are not returned.
> Question: why not just join the tables explicitly?

:-) Because I'm not too familiar with joins.

> The more usual SQL
> approach would be something like:
> 
> SELECT article.title_text_key, on_text.text_value AS title_text_value
> FROM article INNER JOIN (on_text INNER JOIN (code INNER JOIN code_group ON
> code.code_group_id = code.id) ON on_text.lang_id = code.id) ON
> article.title_text_key = on_text.text_key
> WHERE on_text.text_value IS NOT NULL;
> 
> or whatever other tests you want.  In this case, you can easily reference
> the fields by name.

The problem with the query above is that it doesn't include my
"code.code_key='lang.NO'" test.

I rephrased the query as follows:

SELECT article.title_text_key, on_text.text_value AS title_text_value
FROM article INNER JOIN (on_text INNER JOIN (code INNER JOIN code_group
ON
code.code_group_id = code_group.id) ON on_text.lang_id = code.id AND
code_group.description = 'lang' AND code.code_key = 'lang.NO') ON
article.title_text_key = on_text.text_key
WHERE on_text.text_value IS NOT NULL;

And now it works!

Thank you for helping me out.

--
Andreas Joseph Krogh <andreak@officenet.no>


pgsql-sql by date:

Previous
From: Jeff Eckermann
Date:
Subject: RE: Referencing named attribute in where clause doesn't work with 7.1.2?
Next
From: "Chris Ruprecht"
Date:
Subject: Re: Functions returning more than one value