No právě protože "co kdyby" je dané jako premisa (tbl2 nemusí obsahovat záznamy), je určitě lepší praxe provést OUTER JOIN a omezení dát do WHERE. Do JOINU patří definice struktury dat, do WHERE podmínky. Pokud by použil INNER JOIN, tak by část podmínky de facto přesunul do klauzule JOIN. To se nedá doporučit, SQL by mělo být čitelné a podmínky by měly být zejm. ve WHERE. Kdyby se do budoucna rozmyslel a podmínku chtěl přeformulovat (užít např. IS NULL / IS NOT NULL), nefungovalo by to, protože řádky by zahodil JOIN.
Ne, tady jde především o sémantiku. O to, jestli chce Racchek provést sémanticky
INNER JOIN – tedy ve výsledné sadě nebudou záznamy, které nemají záznam v
tbl2, nebo chce provést sémanticky
OUTER JOIN – tedy ve výsledné sadě budou takové záznamy, které v
tbl2 vůbec nejsou, nebo tam jsou a
allowed mají větší než nula. Jsou to významově dva různé dotazy, dávají jinou sadu výsledků, a nejprve si tazatel musí rozhodnout, kterou sadu výsledků chce, teprve pak je možné říci, který dotaz k těm výsledkům vede.