From: | Düster Horst <Horst(dot)Duester(at)bd(dot)so(dot)ch> |
---|---|
To: | "'pgsql-admin(at)postgresql(dot)org'" <pgsql-admin(at)postgresql(dot)org> |
Subject: | Re: where with NULL values are not selected |
Date: | 2005-07-11 10:28:42 |
Message-ID: | 5B025B1F39D6D4119F5700508BEEEC6603DE3D96@srsofaioi4546.ktso.ch |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
The problem is solved. The coalesce() function was the solution. Thank you
very much for your input.
With best regards
Horst Düster
---------------------------------
Dr. Horst Düster
GIS-Koordinator /Amtschef Stv.
Kanton Solothurn
Amt für Geoinformation
Abteilung SO!GIS Koordination
Werkhofstr. 65
CH-4509 Solothurn
Tel.: ++41 (0)32 627 25 32
Fax: ++41 (0)32 627 22 14
horst(dot)duester(at)bd(dot)so(dot)ch
www.sogis.so.ch
-----Ursprüngliche Nachricht-----
Von: Dawid Kuroczko [mailto:qnex42(at)gmail(dot)com]
Gesendet am: Freitag, 8. Juli 2005 11:08
An: Düster Horst
Cc: pgsql-admin(at)postgresql(dot)org
Betreff: Re: [ADMIN] where with NULL values are not selected
On 7/8/05, Düster Horst <Horst(dot)Duester(at)bd(dot)so(dot)ch> wrote:
> I try to join two tables whereas some column values do have NULL values
with
> the following query:
>
> select table1.column from table1, table2 where table1.column=table2.column
>
> table1.column and table2.column may have NULL values. The problem is that
> these columns where not selected. Does there exists any solution to
> select/join the NULL value colums also.
A hint:
qnex=# SELECT 'ok' WHERE NULL=NULL;
?column?
(0 rows)
In other words -- NULL is not equal to NULL. NULL is not a value, NULL
is a state. If you want to join those columns, you cannot use NULL
as a joining key. It's the way SQL works.
Anyway, a quick-and-dirty solution might be:
select table1.column from table1, table2 where
coalesce(table1.column,-1)=coalesce(table2.column, -1);
...assuming column doesn't have '-1' value.
A better solution would be to rethink your design (don't use NULLs).
Incientally, instead of using this syntax:
select table1.column from table1, table2 where table1.column=table2.column;
...try using explicit inner joins:
select table1.column from table1 JOIN table2 USING(column);
Regards,
Dawid
From | Date | Subject | |
---|---|---|---|
Next Message | Aris Aridis | 2005-07-11 14:22:17 | |
Previous Message | nandan bsd | 2005-07-11 06:58:31 | Regarding a backup scenario |