11.12.2012, Vladimír Klaus, navštíveno 4841x

MS Access
SQL

Tento příkaz vytváří kartézský součin – tedy kombinuje všechny hodnoty z jedné tabulky se všemi hodnotami z druhé tabulky. Prakticky to samozřejmě nemá moc valný význam, ale ukážeme si to na stejných tabulkách, jako u ostatních JOIN příkazů.

SELECT * FROM Objednavky, Zakaznici

Objednávek máme v systému 22, zákazníků 11, výsledná tabulka bude mít proto 242 řádek.

SQL obrázek

Asi se divíte, že nebyl použit přímo příkaz CROSS JOIN, ale toto MS Access nepodporuje. Místo toho stačí výše uvedený SELECT.

Také se to dá zjednodušit pouze na některé sloupce.

SELECT * FROM
(SELECT Castka, Datum FROM Objednavky) a,
(SELECT Prijmeni, Jmeno FROM Zakaznici) b

SQL obrázek

Jak jste si asi všimli, v dotazu jsou použita jakási písmenka „a“ a „b“. Co to znamená a k čemu to slouží? V příkladu jsou místo tabulek uvedené SELECTy a ty je nutné nějak pojmenovat. Uvedením písmen (nebo jiného identifikátoru) přiřadíme výběrovému dotazu název – alias.

Jiný dotaz by mohl vypadat třeba takto, kdy to ještě zkombinujeme s podmínkou, odkazující se na výsledek prvního SELECTu.

SELECT * FROM
(SELECT * FROM Objednavky) Tab1,
(SELECT Mesto, PSC FROM Zakaznici) Tab2
WHERE Tab1.Castka > 2000

SQL obrázek

Upozornění: Podobně jako u OUTER JOIN, ani tento výsledek není editovatelný.