SQL Server Krzyż i Zewnętrzne

SQL Server Krzyż i Zewnętrzne

Funkcje cenne tabeli to rodzaj funkcji w SQL Server, który zwraca dane jako tabele. Podczas wykonywania połączeń na SQL Server możesz dołączyć do wierszy z dwóch lub więcej tabel bazy danych. Jednak możliwość dołączenia do tabeli z wyjściem funkcji o wartości docelowej nie jest obsługiwana, chyba że używasz operatorów.

SQL Server obsługuje dwóch operatorów aplitu:

  1. Zastosuj krzyż.
  2. Zastosowanie zewnętrzne.

Zastosowanie krzyżowe jest ściśle podobne, semantycznie, do wewnętrznego połączenia SQL Server. Oznacza to, że odzyskuje rzędy funkcji o wartości docelowej tabeli, aby dołączyć tylko tam, gdzie są dopasowania między dwiema tabelami.

Zastosowanie zewnętrzne, dołączą do rekordów funkcji cenowanej tabeli i zdefiniowanej tabeli, niezależnie od jakichkolwiek pasujących wierszy.

Aby lepiej zrozumieć, jak korzystać z operatorów aplikacji krzyżowych i zewnętrznych na SQL Server, przyjąć praktyczne podejście.

Zacznij od utworzenia testowej bazy danych:

Utwórz bazę danych ApplyDB;

Przełącz do bazy danych Utwórz:

Użyj ApplyDB;

Następnie utwórz tabele i wstaw przykładowe dane, jak pokazano:

CreateTableUsers
(
Id int tożsamość podstawowa null,
Nazwa użytkownika Varchar (50) nie null,
)
Kreatyczne posty
(
Id int tożsamość podstawowa null,
Post_name varchar (255) nie null,
kategoria varchar (50),
data pub_date,
user_id int not null
);
Wstawki (nazwa użytkownika)
Wartości („Breadyoga”),
(„Sputnik1”),
(„Babayaga”),
(„Jagten”),
(„Lavalp”);
Posty insertinto (nazwa post_name, kategoria, pub_date, user_id)
wartości („tytuł1”, „kategoria 1”, „2021-12-31”, 1),
(„Title2”, „kategoria2”, „2019-03-03”, 1),
(„Title3”, „kategoria3”, „2021-01-01”, 2),
(„Title4”, „kategoria 4”, „2021-06-07”, 5),
(„Title5”, „kategoria 5”, „2020-04-11”, 3);

Przykładowy skrypt zapytania tworzy dwie tabele: użytkownicy i posty. Tabela postów zawiera kolumnę user_id, która zawiera wartości z tabeli użytkowników, umożliwiając relacje jeden do wielu w bazie danych.

SQL SERWER ZASTOSOWANIE

Spróbujmy wewnętrznego połączenia z tabelą cenioną tabelą jako:

createFunction GetPostsbyId (@id int)
Returnstable
Jak
powrót
(
Wybierz * Z postów, w których user_id = 1
);
Iść
Wybierz u.Nazwa użytkownika, str.Id, s.Post_name, s. 1.pub_date
od użytkowników u
innerjoin getpostsbyid (u.id) str
na u.id = p.identyfikator użytkownika;

SQL Server zwróci błąd jako:

Aby to rozwiązać, możemy użyć krzyża Zastosuj jako:

Wybierz u.Nazwa użytkownika, str.Id, s.Post_name, s. 1.pub_date
od użytkowników u
Krzyż Zastosuj getpostsbyid (u.id) str

Powyższe zapytanie powinno skutecznie wykonać i zwrócić wynik jako:

SQL SERVER ZASTOSOWANIE

Możemy pobrać rzędy z funkcji fizycznej i docelowej przy użyciu zewnętrznego zastosowania, jak pokazano:

Wybierz u.Nazwa użytkownika, str.Id, s.Post_name, s. 1.pub_date
od użytkowników u
Zewnętrzne zastosowanie getpostsbyid (u.id) str

Powstały zestaw zapytania jest taki jak pokazano:

Wniosek

W tym artykule obejmuje sposób pracy z operatorami SQL Server i krzyżowymi, aby dołączyć do tabeli fizycznej i funkcji o wartości docelowej.