Ano, ale přesně o to jde, aby mohl udělat. Tedy vyselektovat si záznamy, ke kterým není právo "allowed" explicitně dané.
Mně na tom teda poněkud vadí, že je ten dotaz špatně. Chtěl jsem záznamy, které v
tbl2 existují a mají tam
allowed IS NULL, ale vrátilo mi to i záznamy, které v
tbl2 vůbec neexistují.
Jako další příklad toho, co může dávat smysl je dotaz:
SELECT * FROM tbl1 LEFT OUTER JOIN tbl2 USING (id_data) WHERE tbl2.id_data IS NULL OR tbl2.allowed = 0
Pokud často píšete dotazy, ve kterých neexistence záznamu nebo
NULL hodnota má stejný význam, jako nějaká jiná hodnota, tedy vyskytují se vám tam konstrukce
… IS NULL OR … , je to známka toho, že máte špatně navrženou strukturu databáze.
NULL není jedna z mnoha hodnot,
NULL je speciální hodnota, výjimečná – proto se s ní nepracuje pomocí běžných operátorů
= nebo
!=, ale má speciální operátory; proto je „nakažlivá“ a když se objeví u běžných operátorů, je na výstupu zase
NULL…