Używanie sprzężeń krzyżowych

Ukończone

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;