Re: where with NULL values are not selected

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.duester@xxxxxxxx 
www.sogis.so.ch



-----Ursprüngliche Nachricht-----
Von: Dawid Kuroczko [mailto:qnex42@xxxxxxxxx]
Gesendet am: Freitag, 8. Juli 2005 11:08
An: Düster Horst
Cc: pgsql-admin@xxxxxxxxxxxxxx
Betreff: Re: [ADMIN] where with NULL values are not selected

On 7/8/05, Düster Horst <Horst.Duester@xxxxxxxx> 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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux