SQL Server Cross und Outer bewerben

SQL Server Cross und Outer bewerben

Tabellenschätzungsfunktionen sind eine Art von Funktionen im SQL -Server, der Daten als Tabellen zurückgibt. Wenn Sie sich an SQL Server ausführen, können Sie Zeilen aus zwei oder mehr Datenbanktabellen beitreten. Die Möglichkeit, eine Tabelle mit einer Ausgabe einer Tabelle bewertete Funktion zu verbinden, wird jedoch nicht unterstützt, es sei denn.

SQL Server unterstützt zwei Anwendungsbetreiber:

  1. Kreuzbewerb.
  2. Außenbewerb.

Cross Apply ist semantisch sehr ähnlich wie bei einem SQL -Server -inneren Join. Dies bedeutet, dass es die Zeilen einer Tabelle bewertete Funktion und die der Tabelle abruft, um nur zu verbinden, wo es Übereinstimmungen zwischen den beiden Tabellen gibt.

Outer Apply wird den Aufzeichnungen einer Tabelle bewertet, und die definierte Tabelle unabhängig von den passenden Zeilen.

Um besser zu verstehen, wie man Cross und Outer anwenden Operatoren in SQL Server verwendet, lassen Sie uns einen praktischen Ansatz verfolgen.

Erstellen Sie zunächst eine Testdatenbank:

Datenbank erstellen applydb;

Wechseln Sie zur Datenbank erstellen:

Verwenden Sie ApplyDB;

Erstellen Sie als nächstes Tabellen und fügen Sie Beispieldaten wie gezeigt ein:

CreatTableuser
(
ID Int Identity Primär Keynot Null,
Benutzername Varchar (50) NICHT NULL,
)
schöpferische Beiträge
(
ID Int Identity Primär Keynot Null,
post_name varchar (255) nicht null,
Kategorie varchar (50),
PUB_DATE DATUM,
user_id int nicht null
);
InsertIntousers (Benutzername)
Werte ('Breadyoga'),
('Sputnik1'),
('Baba yaga'),
('Jagten'),
('Lavalp');
InsertInto -Beiträge (post_name, Kategorie, pub_date, user_id)
Werte ('title1', 'category1', '2021-12-31', 1),
('title2', 'category2', '2019-03-03', 1),
('title3', 'category3', '2021-01-01', 2),
('title4', 'category4', '2021-06-07', 5),
('title5', 'category5', '2020-04-11', 3);

Das Beispiel -Query -Skript erstellt zwei Tabellen: Benutzer und Beiträge. Die Post-Tabelle enthält eine user_id-Spalte, die die Werte aus der Tabelle der Benutzer enthält, die Eins-zu-Viele-Beziehungen in der Datenbank ermöglichen.

SQL Server Cross anwenden

Versuchen wir einen inneren Zusammenschluss mit einer Tabelle mit einem Tisch als:

createFunction getPostsbyId (@id int)
returnstable
als
zurückkehren
(
Wählen Sie * aus Beiträgen, wobei user_id = 1
);
gehen
Wählen Sie u.Benutzername, p.id, p.post_name, p.pub_date
Von den Bildern u
Innerjoin getPostsbyid (u.id) p
auf u.id = p.Benutzer-ID;

SQL Server gibt einen Fehler als:

Um dies zu lösen, können wir Cross Apply verwenden wie:

Wählen Sie u.Benutzername, p.id, p.post_name, p.pub_date
von Benutzern u
Cross anwenden GetPostsbyId (u.id) p

Die obige Abfrage sollte erfolgreich ausgeführt und das Ergebnis zurückgegeben werden wie:

SQL Server Outer Bewerben

Wir können die Zeilen aus der physischen und der Tabelle bewertete Funktion unter Verwendung des äußeren Antrags wie gezeigt abrufen:

Wählen Sie u.Benutzername, p.id, p.post_name, p.pub_date
von Benutzern u
Außenbewerbsgettpostsbyid (u.id) p

Der resultierende Abfragesatz ist wie gezeigt:

Abschluss

Dieser Artikel behandelt, wie man mit SQL Server Outer und Cross Apply -Operatoren arbeitet, um einer physischen Tabelle und einer Tabelle wertvolle Funktion zu verbinden.