Poddotazy jazyka SQL

Poznámka: Snažíme se pro vás co nejrychleji zajistit aktuální obsah nápovědy ve vašem jazyce. Tato stránka byla přeložena automaticky a může obsahovat gramatické chyby nebo nepřesnosti. Naším cílem je to, aby pro vás byl její obsah užitečný. Mohli byste nám prosím dát ve spodní části této stránky vědět, jestli vám informace v článku pomohly? Pokud byste se rádi podívali na jeho anglickou verzi, najdete ji tady.

Poddotaz je vnořené do výběr, výběr příkazu SELECT... DO PROGRAMU VLOŽÍ... INTO, odstranění nebo aktualizace nebo v jiném poddotazu.

Syntaxe

Tři formy syntaxe slouží k vytvoření poddotazu:

porovnání [VŠECHNY | VŠECHNY | Některé] (příkaz_sql)

výraz [NOT] V (příkaz_sql)

[NOT] EXISTUJE (příkaz_sql)

Poddotaz má následující části:

Část

Popis

porovnání

Výraz a operátor porovnání, které porovná výraz s výsledky výrazu poddotazu.

výraz

Výraz, u kterého proběhne sadu výsledků poddotazu.

sqlstatement

Příkaz SELECT, sledovat stejný formát a pravidla jako jakékoli jiné příkazu SELECT. Musí být uzavřeny v závorkách.


Poznámky

Použití poddotazu místo výrazu v seznamu polí příkazu SELECT nebo v klauzuli WHERE nebo klauzuli HAVING. V takovém případě použijete příkaz SELECT poskytnout sadu jeden nebo více určitých hodnot jehož vyhodnocení WHERE nebo výraz klauzule HAVING.

Pomocí predikát žádné nebo některé, které jsou synonyma načítat záznamy v hlavním dotazu, které splňují porovnání s všechny záznamy načtené v poddotazu. Následující příklad vrací všechny produkty, jejichž jednotková cena je větší než u jakékoli prodané se slevou 25 procent a další produkty:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Použijte predikát ALL k načtení pouze záznamy o v hlavním dotazu vyhovující porovnání s všechny záznamy načtené v poddotazu. Pokud jste změnili NĚKTEROU u všech v předchozím příkladu, dotaz vrátí jenom produkty, jejichž jednotková cena je větší než u všech produktů prodaných se slevou 25 procent a další. Toto je mnohem víc restriktivní.

Použití predikát k získání pouze záznamů v hlavní dotaz, jehož některé záznam v poddotazu obsahuje stejné hodnoty. Následující příklad vrátí všech produktech se slevou 25 procent a informace:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

NOT IN naopak můžete použít k načítání pouze záznamy o hlavního dotazu, u kterého žádný záznam v poddotazu obsahující stejné hodnoty.

Použijte predikát EXISTS (volitelné není vyhrazená slova) při porovnávání true nebo false a zjistit, zda poddotaz vrátí všechny záznamy.

Můžete také aliasy tabulky v poddotazu odkazující na tabulky uvedená v klauzuli FROM mimo poddotazu. Následující příklad vrátí názvy zaměstnanců, kteří mají platy jsou rovna nebo větší než průměrná platu všechny zaměstnance se stejným názvem projektu. Tabulka Zaměstnanci je dán alias "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

V tomto příkladu je jako Rezervované slovo nepovinný krok.

V křížové dotazy jsou povoleny poddotazy –, jako predikáty (použité v klauzuli WHERE). Poddotazy jako výstupu (uvedené v seznamu vyberte) nejsou povolené v křížové dotazy.



Rozšiřte své dovednosti s Office
Projít školení
Získejte nové funkce jako první
Připojte se k účastníkům programu Office Insiders

Byly tyto informace užitečné?

Děkujeme vám za zpětnou vazbu.

Děkujeme vám za váš názor. Vypadá to, že bude užitečné, když vás spojíme s některým z našich agentů z podpory Office.

×