Tento článek vysvětluje, o non-korelaci a korelační poddotaz SQL Server (Transact-SQL) s příkladem.
korelovaný poddotaz
korelovaný poddotaz je poddotaz, jehož hodnota závisí na vnějším dotazu. Korelovaný poddotaz se provádí opakovaně, jednou pro každý řádek, který je vybrán poddotazem.
V korelační poddotaz poddotazu bude spouštěno jednou a nahradí výslednou hodnotu do klauzule where vnějšího dotazu.
Poznámka: nelze spustit korelovaný poddotaz nezávisle na vnějším dotazu.
vytvoříme dvě tabulky, abychom porozuměli korelovanému poddotazu v SQL Serveru (T-SQL).
tabulka produktů:
1
2
3
4
5
6
7
8
9
10
11
|
Vytvořit tabulku ProductsTable
(
ID int Primary Key,
Název nvarchar(50),
Cena int,
Detaily nvarchar(150)
)
Vložit do ProductsTable Values (1, ‚Notebook‘, 30000, ‚notebook pro domácí uživatele‘)
Vložit do ProductsTable Values (2, ‚Pračka‘, 20000, Bílá barva přední zatížení stroje ‚)
Vložit do ProductsTable Hodnoty (3, „TV“, 22000, ’32 palcový HD LED TV‘)
Vložit do ProductsTable Values (4, ‚Lednice‘, 30000, ‚190 Ltr dvojité dveře lednice‘)
|
Prodejní Rekord Stůl:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Vytvořit tabulku SaleRecordTable
(
Id int, Primární Klíč, Identity,
int ProductID,
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′)
|
dotaz načte celkový prodaný produkt z tabulky prodejních záznamů. V poddotazu jsou načteny údaje o celkovém prodaném produktu pro každé id produktu v tabulce produktů.
1
2
3
4
|
–correlated subquery
Select Name,
(Select SUM(SoldQuantity) from SaleRecordTable where ProductId = ProductsTable.ID) jako Celkové Množství Prodané‘
od ProductsTable
|
Výstup:
Pokud se vám bude spuštěn poddotaz samostatně, pak dostanete následující chybu.
Non-korelační Poddotaz
non-korelační poddotaz je poddotaz, který je nezávislý na vnějším dotazy. Nekorelovanou poddotaz můžete spustit nezávisle na vnějším dotazu.
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)
|
Výstup:
Pokud se vám bude spuštěn poddotaz nezávisle, pak je tento čas nebudete mít žádné chyby. Výstupem pak bude:
Doufám, že tento článek vám pomohl pochopit korelaci a non-korelační poddotaz SQL Server. Prosím, psát své připomínky pro dotazy a zpětnou vazbu. Díky za přečtení.
- Bio
- Latest Posts
Nejnovější příspěvky Gyanendu Shekhar (zobrazit všechny)
- Pomocí Průhledného Materiálu v Unity 3D – 8. února 2021
- začínáme s UI Toolkit : Unity 3D Tutoriál – 30. prosince 2020
- Pomocí Události v Unity 3D – 2. Května 2020