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:
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‘)
|
Umsatzdatensatz-Tabelle:
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′)
|
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.
1
2
3
4
|
–correlated subquery
Select Name,
(Select SUM(SoldQuantity) from SaleRecordTable where ProductId = ProductsTable.ID) als ‚Verkaufte Gesamtmenge‘
aus ProductsTable
|
Ausgabe:
Wenn Sie die Unterabfrage unabhängig dann erhalten Sie den folgenden Fehler.
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.
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:
Wenn Sie die Unterabfrage unabhängig ausführen, erhalten Sie diesmal keinen Fehler. Die Ausgabe lautet:
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.
- Bio
- Latest Posts
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