skorelowane Podquery w SQL Server

Ten artykuł wyjaśnia na temat nierelowanych i skorelowanych podquery w SQL Server (Transact-SQL) na przykładzie.

skorelowane podzapytanie

skorelowane podzapytanie jest podzapytaniem, którego wartość zależy od zapytania zewnętrznego. Skorelowane podzapytanie jest wykonywane wielokrotnie, raz dla każdego wiersza wybranego przez podzapytanie.

w skorelowanym podzapytaniu podzapytanie zostanie wykonane raz, a wynikowa wartość zostanie zamieniona na klauzulę WHERE zapytania zewnętrznego.

uwaga: nie można wykonać skorelowanego zapytania podrzędnego niezależnie od zapytania zewnętrznego.

stwórzmy dwie tabele, aby zrozumieć skorelowane podquery w SQL Server (T-SQL).

tabela produktów:

MySQL

1
2
3
4
5
6
7
8
9
10
11

Utwórz tabelę productsstable
(
Identyfikator klucza podstawowego int,
Nazwa nvarchar(50),
Cena int,
Szczegółowe informacje na temat nvarchar(150)
)
wstaw do Produktówstabilne wartości (1, 'Laptop’, 30000, 'laptop dla użytkowników domowych’)
wstaw do Produktówstabilne wartości (2, 'Pralka’, 20000, 'maszyna z przednim obciążeniem w kolorze białym’)
wstaw do Produktówstabilne wartości (3, 'TV’, 22000, ’32-calowy telewizor HD LED’)
insert into productstable values (4, 'lodówka’, 30000, '190 ltr lodówka z podwójnymi drzwiami’)

correlated-subquery-Products-table

tabela rekordów sprzedaży:

MySQL

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

Utwórz tabelę salerecordtable
(
Identyfikator klucza podstawowego int,
Identyfikator produktu int,
Sprzedający liczba 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 w przykładzie SQL Server

zapytanie pobierze całość sprzedanego produktu z tabeli rekordów sprzedaży. W subquery pobierane są dane dotyczące wszystkich sprzedanych produktów dla każdego id produktu Tabeli produktów.

MySQL

Wyjście:

skorelowane i nieskorelowane-skorelowane-podzapytanie-wyjście-1

jeśli uruchomisz podzapytanie niezależnie, otrzymasz następujący błąd.

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

Non-correlated Subquery

non-correlated subquery to subquery niezależne od zewnętrznych zapytań. Podzapytanie nie jest skorelowane, niezależnie od zapytania zewnętrznego.

Non-Correlated Subquery in SQL Server – Example

MySQL

1
2
3
4

–correlated subquery
Select Name,
(Select SUM(SoldQuantity) from SaleRecordTable where ProductId = ProductsTable.ID) jako „całkowita liczba sprzedanych”
z productsstable
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)

Wyjście:correlated-subquery-non-output-1

jeśli uruchomisz subquery niezależnie, tym razem nie otrzymasz żadnego błędu. Wynik będzie następujący:

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

mam nadzieję, że ten artykuł pomógł Ci zrozumieć skorelowane i nierelowane podquery w SQL Server. Proszę publikować swoje komentarze dla zapytań i opinii. Dzięki za przeczytanie.

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.

Mój profil na TwitterzeMój profil na FacebookuMój profil Google+

najnowsze posty gyanendu Shekhar (Zobacz wszystkie)

  • używanie przezroczystego materiału w Unity 3D – 8 lutego 2021
  • rozpoczęcie pracy z zestawem narzędzi UI : Unity 3D tutorial – 30 grudnia 2020
  • używanie zdarzeń w Unity 3D – 2 maja 2020

Related Posts

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *