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. Korzystanie z składni ANSI-92 jest nieco trudniejsze; co jest dobre, ponieważ ogólnie rzecz biorąc, sprzężenie krzyżowe nie jest czymś, czego zwykle potrzebujesz. Dzięki składni ANSI-92 jest mało prawdopodobne, że przypadkowo uzyskasz sprzężenie krzyżowe.
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. Gdy tabela jest sprzężona krzyżowo sama ze sobą, może ona z zaledwie 100 wierszy łatwo wygenerować 10 000 wierszy wyjściowych przy minimalnym nakładzie 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 użycia klauzuli ON z 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;