select distinct a NULL
Honza Pazdziora
adelton na informatics.muni.cz
Pátek Listopad 1 10:42:16 CET 2002
On Fri, Nov 01, 2002 at 10:30:54AM +0100, "Zíka Aleš, Ing." wrote:
>
> Myslel jsem ze plati NULL != NULL, takze by tam radky s NULL
No, tohle je dost silne tvrzeni. Plati, ze NULL = NULL nevrati true a
NULL <> NULL nevrati true. Ale ze by platilo NULL != NULL, to teda moc
ne. Kdyby to totiz platilo, tak byste musel byt schopen od sebe
odlisit zaznamy
( 1, 5, null )
( 1, 5, null )
podobne jako jste schopen odlisit zaznamy
( 1, 5, 90 )
( 1, 5, 91 )
A to nejste. Nejste schopen napsat podminku, ktera Vam pouze na
zaklade hodnot tech atributu vrati jeden ten konkretni zaznam, jenom
ten prvni ( 1, 5, null ) nebo jenom ten druhy. Samozrejme pomijim ruzne
oid a rowid a tak, protoze to uz neni cista relacni zalezitost.
> hodnotou mely byt vsechny. Kdyz na to pole udelam UNIQUE index, nedovoli mi
> tam dat dve desitky, ale vic NULL mu nevadi.
Protoze ta semantika je jina -- unique se zabyva pouze definovanymi
hodnotami, coz NULL neni. Podobne treba foreign klic se netestuje,
pokud hodnota v te zavisle tabulce je NULL -- protoze to proste neni
definovana hodnota, se kterou by se daly delat operace jako = nebo
<>.
> Jak to teda je, je to chovani SELECT DISTINCT normalni, nebo to je
> chyba?
Povazoval bych to za normalni a spravne, zvlaste za situace, kdy jsem
ted vyzkousel, ze Oracle se chova stejne. ;-))
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------
Další informace o konferenci Databases