Web888.vn
  • Shop
  • Blog
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Datenbank
  • Micrsoft SQL Server
SQL Server JOIN-Klausel

SQL Server JOIN-Klausel

  • 12-09-2022
  • Toanngo92
  • 0 Comments

Mục lục

  • Einführung von JOIN in SQL Server
    • Innerer Beitritt
    • Äußerer Join
      • Linke äußere Verbindung
    • Selbst beitreten
    • MERGE .-Anweisung

Einführung von JOIN in SQL Server

JOIN wird verwendet, um Daten aus zwei oder mehr Tabellen basierend auf der logischen Beziehung zwischen den Tabellen abzurufen. Ein Join ( JOIN ) gibt normalerweise eine Fremdschlüsselbeziehung zwischen Tabellen an. Es bestimmt, wie zwei Tabellen in einer Abfrage in Beziehung stehen, indem es:

  • Geben Sie die Spalte aus jeder Tabelle an, die für den Join verwendet werden soll ( JOIN ). Ein typischer Join ( JOIN ) gibt einen Fremdschlüssel aus einer Tabelle und den zugehörigen Schlüssel in einer anderen an.
  • Geben Sie einen logischen Operator wie =, <> an, der zum Vergleichen von Werten aus Spalten verwendet werden soll.

Der JOIN kann in der FROM- oder WHERE-Klausel angegeben werden.

Syntax:

SELECT <ColumnName1>, <ColumnName2>, ... <ColumnNameN> FROM Table_Name1 AS alias_1 JOIN Table_Name2 AS alias_2 ON alias_1.<RelatedColumn> = alias_2.<RelatedColumn>

Angenommen, Sie möchten eine Liste der Mitarbeiternamen, Nachnamen und Berufsbezeichnungen aus den Tabellen „HumanResources.Employee“ und „Person.Person“ abrufen. Um die Informationen von 2 Tabellen zu erhalten, müssen die 2 Tabellen gemäß der Fremdschlüsselzuordnung der BusinessEntiyID-Spalte verknüpft werden. Zum Beispiel:

SELECT A.FirstName,A.LastName,B.JobTitle FROM Person.Person A JOIN HumanResources.Employee B ON A.BusinessEntityID = B.BusinessEntityID

Wenn wir dieses Problem weiter entwickeln, haben wir 3 konzeptionelle JOINS-Typen:

  • Innere Verknüpfungen
  • Äußere Verknüpfungen
  • Selbst beitritt

Innerer Beitritt

Ein innerer Join wird gebildet, wenn Datensätze aus zwei Tabellen nur kombiniert werden, wenn Zeilen aus beiden Tabellen basierend auf einer gemeinsamen Spalte abgeglichen werden.

Unterschied zwischen JOIN und INNER JOIN : JOIN gibt alle Zeilen aus Tabellen zurück, bei denen der Schlüsselsatz einer Tabelle gleich den Schlüsselsätzen einer anderen Tabelle ist . INNER JOIN wählt alle Zeilen aus beiden Join-Tabellen aus, solange es eine Übereinstimmung zwischen den Spalten gibt

Syntax:

SELECT <ColumnName1>,<ColumnName2> ... <ColumnNameN> FROM Table_A AS Table_Alias_A INNER JOIN Table_B AS Table_Alias_B ON Table_Alias_A.<RelatedColumn> = Table_Alias_B.<RelatedColumn>

Zum Beispiel:

SELECT A.FirstName, A.LastName, B.JobTitle FROM Person.Person A INNER JOIN HumanResources.Employee B ON A.BusinessEntityID = b.BusinessEntityID

Äußerer Join

Outer Joins sind Join-Anweisungen, die alle Zeilen aus mindestens einer der in der FROM -Klausel angegebenen Tabellen zurückgeben, solange diese Zeilen eine der WHERE- oder HAVING- Bedingungen der SELECT-Anweisung erfüllen. Zwei häufig verwendete Outer-Join-Typen sind wie folgt:

  • Linke äußere Verbindung
  • Rechte äußere Verknüpfung

Linke äußere Verbindung

Der linke äußere Join gibt alle Datensätze aus der linken Tabelle und nur den rechten übereinstimmenden Datensatz zurück.

Syntax:

SELECT <ColumnList> FROM Table_A AS ALIAS_A LEFT OUTER JOIN Table_B AS ALIAS_B ON ALIAS_A.<RelatedColumn> = ALIAS_B.<RelatedColumn>

Angenommen, Sie möchten alle Kunden-IDs aus der Sales.Customers-Tabelle und Bestellinformationen wie Versanddaten, Fälligkeitsdaten, sogar Kunden abrufen, die keine Bestellungen aufgegeben haben, aber die Anzahl der Datensätze ist sehr groß, sodass wir vorher ein Bestelllimit festlegen 2019 führen Sie dazu den LEFT OUTER JOIN wie folgt aus:

SELECT A.CustomerID, B.DueDate, B.ShipDAte FROM Sales.Customer A LEFT OUTER JOIN Sales.SalesOrderHeader B ON A.CustomerID = B.CustomerID AND YEAR(B.DueDate) < 2019

Im obigen Code ist der Left Outer Join eine Struktur zwischen den Tabellen Sales.Customer und Sales.SalesOrderHeader . Die Tabelle wird basierend auf der Kunden-ID-Spalte verknüpft. In dieser Situation sind alle Datensätze der linken Tabelle Sales.Customer und nur die übereinstimmenden Datensätze der rechten Tabelle Sales.SalesOrderHeader . Wenn die Daten der rechten Tabelle nicht übereinstimmen, wird die linke Tabelle trotzdem abgerufen und die Tabelle an das Recht der Daten wird null zurückgeben.

Rechte äußere Verknüpfung

Right Outer Join ruft alle Datensätze aus der rechten Tabelle des Joins ab, unabhängig davon, ob es eine Übereinstimmung in der ersten Tabelle gibt.

SELECT <ColumnList> FROM Left_Table_Name AS Alias_A RIGHT OUTER JOIN Table_B as ALIAS_B ON Alias_A.<RelatedColumn> = Allias_B.<RelatedColumn>

Sie möchten beispielsweise alle Produktnamen aus der Produkttabelle und alle zugehörigen Bestellungen aus der SalesOrderDetail-Tabelle abrufen, obwohl möglicherweise Produktdatensätze vorhanden sind, die nicht mit den Daten in der SalesOrderDetail-Tabelle übereinstimmen (Produkte, die noch nicht verkauft wurden). immer) wie folgt:

SELECT P.Name,S.SalesOrderID FROM Sales.SalesOrderDetail S RIGHT OUTER JOIN Production.Product P ON P.ProductID = S.ProductID
Von der rechten äußeren Verknüpfung der Abfrage zurückgegebenes Ergebnis

Selbst beitreten

Ein Self-Join-Join wird verwendet, um die Beziehung zwischen Datensätzen in derselben Tabelle anzuzeigen. Eine mit sich selbst verknüpfte Tabelle wird Self-Join genannt.

Beispielsweise möchten Sie die Selbstverknüpfung verwenden, um die Produktdetails abzurufen, die in der Tabelle Production.Product dieselbe Farbe haben

SELECT p1.ProductID, p1.Color, p1.Name, p2.Name FROM Production.Product p1 INNER JOIN Production.Product p2 ON p1.Color = p2.Color ORDER BY p1.ProductID

MERGE .-Anweisung

Mit der MERGE-Anweisung können Sie mit einer einzigen Anweisung eine Zieltabelle unter bestimmten Join-Bedingungen für eine Quelltabelle verwalten.

Wenn Sie zum Beispiel möchten:

  • Vergleichen Sie den Nachnamen und den Vornamen des Kunden aus 2 Quell- und Zieltabellen
  • Aktualisieren Sie die Kundeninformationen in der Zieltabelle, wenn Vorname und Nachname übereinstimmen
  • Fügen Sie der Zieltabelle einen neuen Datensatz hinzu, wenn der Nachname und die Vornamen in der Quelltabelle nicht in der Zieltabelle vorhanden sind
  • Löschen Sie Datensätze in der Zieltabelle, wenn Nachname und Vorname nicht mit der Quelltabelle übereinstimmen

Die MERGE-Anweisung schließt Aufgaben in einer einzigen Anweisung ab. Mit MERGE können Sie auch Datensätze anzeigen, die mit der OUTPUT-Klausel eingefügt, aktualisiert oder gelöscht wurden.

Syntax:

MERGE target_table USING source_table ON match_condition WHEN MATCHED THEN UPDATE SET col1 = vale [,Col2 = val2] WHEN [TARGET] NOT MATCHED THEN INSERT (Col1[,Col2...]) VALUES(Val1[,Val2...]) WHEN NOT MATCH BY SOURCE THEN DELETE [OUTPUT $action, inserted.Col1,Deleted.Col1,....];

Erklären:

  • target_table: die Zieltabelle, in der sich die Daten hier ändern
  • source_table: Quelltabelle, enthält Datensätze, die in der Zieltabelle hinzugefügt, aktualisiert und gelöscht werden können
  • match_conditions: die Join-Bedingung (JOIN) und alle Vergleichsoperatoren.
  • MATCHED: gibt true zurück, wenn target_table- und source_table-Datensätze mit match_condition übereinstimmen.
  • NOT MATCHED: gibt true zurück, wenn der Datensatz aus source_table nicht in target_table existiert.
  • SOURCE NOT MATCH: Gibt zurück, ob der Datensatz in target_table, aber nicht in source_table existiert.
  • AUSGABE: Die optionale Klausel ermöglicht die Anzeige von Datensätzen, die in target_Table thematisiert/gelöscht/aktualisiert wurden.

Die MERGE-Anweisung endet mit einem Semikolon (;).

Zum Beispiel:

use AdventureWorks2019 go SET IDENTITY_INSERT [Person].[AddressType] ON MERGE INTO [Person].[AddressType] AS Target USING (VALUES (1,'Billing') , (2,'Home'),(3,'Headquarters'),(4,'Primary'),(5,'Shipping'),(6,'Archival'),(7,'Contact'),(8,'Alternative')) AS Source ([AddressTypeID],[Name]) ON (Target.[AddressTypeID] = Source.[AddressTypeID]) WHEN MATCHED AND (Target.[Name] <> Source.[Name]) THEN UPDATE SET [Name] = Source.[NAME] WHEN NOT MATCHED BY TARGET THEN INSERT ([AddressTypeID],[Name]) VALUES(Source.[AddressTypeID],Source.[Name]) WHEN NOT MATCHED BY SOURCE THEN DELETE OUTPUT $action, Inserted.[AddressTypeID], Inserted.Name, Deleted.[AddressTypeID], Deleted.Name;
Ergebnis nach Verwendung des Befehls MERGE

Tabelle Person.AddressType ist die Zieltabelle, Beispieldaten werden über den USING-Befehl eingefügt (VALUES (1,’Billing’) , (2,’Home’),(3,’Headquarters’),(4,’Primary’) ,(5,’Shipping’),(6,’Archival’),(7,’Contact’),(8,’Alternative’)) AS Quelle ist die Quelltabelle, die Übereinstimmungsbedingung ist die AddressTypeID-Spalte beider Tabellen Quelle und Ziel. Wenn die Übereinstimmungsbedingung als falsch ausgewertet wird (NICHT ZUSAMMENGEPASST). Neue Datensätze werden der Zieltabelle hinzugefügt. Wenn die Übereinstimmungsbedingungen wahr (MATCHED) zurückgeben, wird der Datensatz basierend auf den Daten der Quelltabelle in der Zieltabelle aktualisiert.

Wenn die Datensätze in der Zieltabelle nicht mit der Quelltabelle übereinstimmen (NOT MATCHED BY SOURCE), werden sie aus der Zieltabelle gelöscht. Die Rolle der letzten Anweisung besteht darin, die hinzugefügten/aktualisierten/gelöschten Zeilen zu melden und die Ausgabe anzuzeigen.

Bài viết liên quan:

SQL Server GROUP BY-Klausel
Einführung in Microsoft SQL Server
Schritt-für-Schritt-Anleitung zur Installation von Microsoft SQL Server und zur Verbindung mit der Datenbank für Anfänger
Einführung in Transact-SQL (T-SQL)
Erstellen und verwalten Sie die Datenbank, erstellen Sie Benutzer in SQL Server
Tabelle (Tabelle) in SQL Server
Constraint (constraint) table strong SQL Server
Unterabfragen (Unterabfragen) in SQL Server
Common Table Expression (CTE) – Common Table Expression in SQL Server
Kombinieren von Daten mit (SET OPERATORS) UNION, INTERSECT und EXCEPT in SQL Server
SQL Server-Pivot- und Gruppierungssatz-Operatoren
Index in SQL Server

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

JSON-Daten in SQL Server

Erweiterte SQL-Funktionen in SQL Server 2019

Einführung in Azure SQL

PHP manuell auf Linux- und Unix-Betriebssystemen installieren

Installieren Sie PHP manuell auf Mac OS

Giới thiệu

web888.vn là chuyên trang chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với web888

© web888.vn - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.

Your personal data will be used to support your experience throughout this website, to manage access to your account, and for other purposes described in our privacy policy.

Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×