10.12.2012, Vladimír Klaus, navštíveno 7546x

MS Access
SQL

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

SQL obrázek

Upozornění: Výsledná tabulka není editovatelná.