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. 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;