11.02.2013, Vladimír Klaus, navštíveno 9952x
Tento příkaz umí vyhledat záznamy, které se vyskytují jak v prvním, tak i v druhém dotazu. Je to zkrátka klasický průnik. MS Access tento příkaz ale nezná, ale jak už bylo několikrát zmíněno, je zde náhrada. A tou je INNER JOIN, samozřejmě vhodně nastavený.
Mějme dva základní dotazy – první vypíše zákazníky z Prahy a druhý zákazníky, kteří si objednali alespoň za 1000 Kč.
SELECT * FROM Zakaznici WHERE Mesto LIKE "Praha*"
SELECT * FROM Objednavky WHERE Castka >= 1000
A nyní nás zajímají zákazníci, kteří jsou z Prahy a objednali si alespoň za 1000 Kč. Protože máme údaje ve dvou tabulkách, musíme je nejprve spojit. K tomu slouží INNER JOIN. Ale jak už asi vidíte z předchozího obrázku, někteří zákazníci si objednali více než jednou, a proto by byly ve výsledku vícekrát. Ale tak funkce INTERSECT pochopitelně nemůže fungovat. Přidáme tedy kouzelné slovo DISTINCT a je to.
SELECT DISTINCT Zakaznici.ID, Zakaznici.Prijmeni, Zakaznici.Mesto
FROM Zakaznici
INNER JOIN
(SELECT * FROM Objednavky WHERE Castka >= 1000) b
ON (Zakaznici.ID = b.IdZakaznika)
WHERE Zakaznici.Mesto LIKE "Praha*"