10.12.2012, Vladimír Klaus, navštíveno 7546x
Existuje ještě další spojení - OUTER JOIN, které ale MS Access nepodporuje. Nejde o nic jiného, než spojení LEFT a RIGHT JOIN, tedy na obou stranách jsou i řádky, které nemají odpovídající protějšek.
Aby se dala tato docela specifická úloha přesto v Accessu realizovat, budeme potřebovat ještě vědět, jak používat příkaz UNION a také se trochu zamyslet – a možná si znovu přečíst vše, co už bylo v této části napsáno.
Pokud zkusíte spojit výsledky LEFT JOIN a RIGHT JOIN, zjistíte, že to nefunguje. Korektní řádky (existuje objednávka i zákazník) tam jsou 2x. Je tedy třeba přidat do obou dotazů kontrolu na NULL. Tím získáme nekorektní řádky zleva a nekorektní řádky zprava. Posledním krokem tedy bude přidání hlavního výběru (pomocí INNER JOIN), který k těmto nekorektním, přidá i všechny korektní.
SELECT * FROM Objednavky
INNER JOIN Zakaznici ON Objednavky.IdZakaznika = Zakaznici.ID
UNION ALL
SELECT * FROM Objednavky
LEFT JOIN Zakaznici ON Objednavky.IdZakaznika = Zakaznici.ID
WHERE Zakaznici.ID IS NULL
UNION ALL
SELECT * FROM Objednavky
RIGHT JOIN Zakaznici ON Objednavky.IdZakaznika = Zakaznici.ID
WHERE Objednavky.IdZakaznika IS NULL
Upozornění: Výsledná tabulka není editovatelná.