Używanie sprzężeń krzyżowych
Sprzężenia krzyżowe jest po prostu produktem kartezjańskim obu tabel. Korzystając ze składni ANSI SQL-89, można utworzyć sprzężenie krzyżowe, pozostawiając tylko filtr łączący dwie tabele. Składnia ANSI-92 jest nieco trudniejsza; co jest dobre, ponieważ ogólnie rzecz biorąc, sprzężenia krzyżowego nie jest czymś, czego zwykle potrzebujesz. Składnia ANSI-92 jest bardzo mało prawdopodobna, że przypadkowo zostanie sprzężone krzyżowo.
Aby jawnie utworzyć produkt kartezjański, należy użyć operatora CROSS JOIN.
Ta operacja tworzy zestaw wyników ze wszystkimi możliwymi kombinacjami wierszy wejściowych:
SELECT <select_list>
FROM table1 AS t1
CROSS JOIN table2 AS t2;
Chociaż ten wynik nie jest zwykle pożądanym wynikiem, istnieje kilka praktycznych aplikacji do pisania jawnego CROSS JOIN:
- Tworzenie tabeli liczb z wierszem dla każdej możliwej wartości w zakresie.
- Generowanie dużych ilości danych na potrzeby testowania. Po sprzężeniu krzyżowym tabela z zaledwie 100 wierszami może łatwo wygenerować 10 000 wierszy wyjściowych z niewielką ilością pracy.
SKŁADNIA CROSS JOIN
Podczas pisania zapytań przy użyciu funkcji CROSS JOIN należy wziąć pod uwagę następujące wskazówki:
- Nie jest wykonywane dopasowywanie wierszy, więc nie jest używana klauzula ON. (Jest to błąd podczas używania klauzuli ON z użyciem klauzuli CROSS JOIN).
- Aby użyć składni ANSI SQL-92, należy oddzielić nazwy tabel wejściowych operatorem CROSS JOIN.
Poniższe zapytanie to przykład użycia funkcji CROSS JOIN w celu utworzenia wszystkich kombinacji pracowników i produktów:
SELECT emp.FirstName, prd.Name
FROM HR.Employee AS emp
CROSS JOIN Production.Product AS prd;