Korrelierte Unterabfrage in SQL Server

In diesem Artikel werden nicht korrelierte und korrelierte Unterabfragen in SQL Server (Transact-SQL) anhand eines Beispiels erläutert.

Korrelierte Unterabfrage

Eine korrelierte Unterabfrage ist die Unterabfrage, deren Wert von der äußeren Abfrage abhängt. Die korrelierte Unterabfrage wird wiederholt ausgeführt, einmal für jede Zeile, die von der Unterabfrage ausgewählt wird.

In der korrelierten Unterabfrage wird die Unterabfrage einmal ausgeführt und der resultierende Wert wird durch die WHERE-Klausel der äußeren Abfrage ersetzt.

Hinweis: Sie können keine korrelierte Unterabfrage unabhängig von der äußeren Abfrage ausführen.

Lassen Sie uns zwei Tabellen erstellen, um die korrelierte Unterabfrage in SQL Server (T-SQL) zu verstehen.

Produkte Tabelle:

MySQL

1
2
3
4
5
6
7
8
9
10
11

Tabelle erstellen ProductsTable
(
ID int Primärschlüssel,
Name nvarchar(50),
Preis int,
Details nvarchar(150)
)
Einfügen in ProductsTable Werte (1, ‚Laptop‘, 30000, ‚EIN laptop für heimanwender‘)
Einfügen in ProductsTable Werte (2, ‚Waschmaschine‘, 20000, ‚Weiß farbe frontlader maschine ‚)
Einfügen in ProductsTable Werte (3, ‚TV‘, 22000, ’32 zoll HD LED TV‘)
Einfügen in ProductsTable Werte (4, ‚Kühlschrank ‚, 30000, ‚190 Ltr Doppeltür Kühlschrank‘)

korrelierte-Unterabfrage-Produkte-Tabelle

Umsatzdatensatz-Tabelle:

MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13

Tabelle erstellen SaleRecordTable
(
Id int Primärschlüsselidentität,
ProductID int,
SoldQuantity int,
SaleDate Date
)
Insert into SaleRecordTable Values (2, 3, ’10-10-2016′)
Insert into SaleRecordTable Values (3, 5, ’10-10-2016′)
Insert into SaleRecordTable Values (2, 2, ’11-10-2016′)
Insert into SaleRecordTable Values (4, 6, ’11-10-2016′)
Insert into SaleRecordTable Values (2, 6, ’12-10-2016′)
Insert into SaleRecordTable Values (4, 6, ’13-10-2016′)

correlated-subquery-sale-record-table

Correlated Subquery in SQL Server – Example

ruft die Abfrage das gesamte verkaufte Produkt aus der Verkaufssatztabelle ab. In der Unterabfrage total product sold werden Daten für jede Produkt-ID der Produkttabelle abgerufen.

MySQL

1
2
3
4

–correlated subquery
Select Name,
(Select SUM(SoldQuantity) from SaleRecordTable where ProductId = ProductsTable.ID) als ‚Verkaufte Gesamtmenge‘
aus ProductsTable

Ausgabe:

korrelierte und nicht korrelierte Unterabfrage-korrelierte Ausgabe-1

Wenn Sie die Unterabfrage unabhängig dann erhalten Sie den folgenden Fehler.

correlated-and-non-correlated-subquery-correlated-output-2

Nicht-korrelierte Unterabfrage

Eine nicht-korrelierte Unterabfrage ist eine Unterabfrage, die unabhängig von äußeren Abfragen ist. Sie können nicht korrelierte Unterabfragen unabhängig von der äußeren Abfrage ausführen.

Non-Correlated Subquery in SQL Server – Example

MySQL

1
2
3
4

–Non correlated query
Select ID, Name, Details
From ProductsTable
Where ID = (Select ProductID from SaleRecordTable Where SaleDate =’10-10-2016′ AND ProductID =2)

Ausgabe:correlated-subquery-non-output-1

Wenn Sie die Unterabfrage unabhängig ausführen, erhalten Sie diesmal keinen Fehler. Die Ausgabe lautet:

correlated-and-non-correlated-subquery-non-output-2

Ich hoffe, dieser Artikel hat Ihnen geholfen, korrelierte und nicht korrelierte Unterabfragen in SQL Server zu verstehen. Bitte posten Sie Ihre Kommentare für Fragen und Feedback. Danke fürs Lesen.

Share Button
The following two tabs change content below.

  • Bio
  • Latest Posts

My Twitter profileMy Facebook profileMy Google+ profile

Gyanendu Shekhar is a technology enthusiast. He loves to learn new technologies. His area of interest includes Microsoft technologies, Augmented reality, Virtual reality, unity3d and android development.

Mein Twitter-ProfilMein Facebook-ProfilMein Google+ Profil

Neueste Beiträge von Gyanendu Shekhar (alle anzeigen)

  • Transparentes Material in Unity 3D verwenden – 8. Februar 2021
  • Erste Schritte mit UI Toolkit : Unity 3D-Tutorial – 30. Dezember 2020
  • Ereignisse in Unity 3D verwenden – 2. Mai 2020

Related Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.