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>