Použití křížových spojení
Křížové spojení je jednoduše kartézský součin těchto dvou tabulek. Pomocí syntaxe ANSI SQL-89 můžete vytvořit křížové spojení tak, že vypustíte filtr, který obě tabulky propojí. Použití syntaxe ANSI-92 je o něco těžší; což je dobré, protože obecně, křížové spojení není něco, co obvykle chcete. Díky syntaxi ANSI-92 je velmi nepravděpodobné, že náhodou skončíte s křížovým spojením.
Pokud chcete explicitně vytvořit kartézský produkt, použijte operátor CROSS JOIN.
Tato operace vytvoří sadu výsledků se všemi možnými kombinacemi vstupních řádků:
SELECT <select_list>
FROM table1 AS t1
CROSS JOIN table2 AS t2;
I když tento výsledek obvykle není požadovaný výstup, existuje několik praktických aplikací pro zápis explicitního křížového spojení:
- Vytvoření tabulky čísel s řádkem pro každou možnou hodnotu v oblasti
- Generování velkých objemů dat pro testování Při křížovém spojení k sobě může tabulka, která má jen 100 řádků, snadno vygenerovat 10 000 výstupních řádků s malou prací od vás.
Syntaxe KŘÍŽOVÉHO SPOJENÍ
Při psaní dotazů pomocí funkce CROSS JOIN zvažte následující pokyny:
- Neprovádí se žádná shoda s řádky, takže se nepoužívá žádná klauzule ON. (Jedná se o chybu použití klauzule ON s CROSS JOIN.)
- Pokud chcete použít syntaxi ANSI SQL-92, oddělte názvy vstupních tabulek pomocí operátoru CROSS JOIN.
Následující dotaz je příkladem použití funkce CROSS JOIN k vytvoření všech kombinací zaměstnanců a produktů:
SELECT emp.FirstName, prd.Name
FROM HR.Employee AS emp
CROSS JOIN Production.Product AS prd;