Použití křížových spojení

Dokončeno

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;