Prihláste sa s kontom Microsoft
Prihláste sa alebo si vytvorte konto.
Dobrý deň,
Vyberte iné konto.
Máte viacero kont
Vyberte konto, s ktorým sa chcete prihlásiť.

Poddotaz je príkaz SELECT vnorený vo vnútri príkazu SELECT, SELECT... DO, VLOŽIŤ... Príkaz INTO, DELETE alebo UPDATE alebo v inom poddotaze.

Syntax

Poddotaz môžete vytvoriť pomocou troch foriem syntaxe:

porovnanie [ANY | VŠETKY | NIEKTORÉ] (sqlstatement)

výraz [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

Poddotaz má tieto časti:

Časť

Popis

Porovnanie

výraz a operátor porovnania, ktorý porovnáva výraz s výsledkami poddotazu.

výraz

Výraz, pre ktorý sa prehľadáva množina výsledkov poddotazu.

príkaz SQL

Príkaz SELECT, ktorý má rovnaký formát a pravidlá ako akýkoľvek iný príkaz SELECT. Musí byť uzavretá v zátvorkách.


Poznámky

Namiesto výrazu v zozname polí príkazu SELECT alebo klauzuly WHERE alebo HAVING môžete použiť poddotaz. V poddotazi použijete príkaz SELECT na poskytnutie množiny jednej alebo viacerých konkrétnych hodnôt na vyhodnotenie vo výraze klauzuly WHERE alebo HAVING.

Pomocou predikátu ANY alebo SOME, ktoré sú synonymické, môžete načítať záznamy v hlavnom dotaze, ktoré spĺňajú porovnanie so všetkými záznamami načítanými v poddotazi. V nasledujúcom príklade sa vrátia všetky produkty, ktorých jednotková cena je väčšia ako cena akéhokoľvek produktu predaného so zľavou 25 percent alebo viac:

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

Predikát ALL sa používa na načítanie iba tých záznamov v hlavnom dotaze, ktoré spĺňajú porovnanie so všetkými záznamami načítanými v poddotaze. Ak ste v predchádzajúcom príklade zmenili možnosť ANY na ALL, dotaz vráti iba produkty, ktorých jednotková cena je väčšia ako cena všetkých produktov predaných so zľavou 25 percent alebo viac. Je to oveľa prísnejšie.

Predikát IN sa používa na načítanie iba tých záznamov v hlavnom dotaze, pre ktoré niektoré záznamy v poddotazi obsahujú rovnakú hodnotu. V nasledujúcom príklade sa vrátia všetky produkty so zľavou 25 % alebo viac:

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

Naopak, funkciu NOT IN môžete použiť na načítanie iba tých záznamov v hlavnom dotaze, pre ktoré žiadny záznam v poddotaze neobsahuje rovnakú hodnotu.

Použite predikát EXISTS (s voliteľným nevyhradeným slovom NOT) v porovnaniach true/false na určenie, či poddotaz vráti nejaké záznamy.

Aliasy názvov tabuliek môžete v poddotazi použiť aj na odkazovanie na tabuľky uvedené v klauzule FROM mimo poddotaz. V nasledujúcom príklade sa vrátia mená zamestnancov, ktorých platy sa rovnajú alebo sú vyššie ako priemerná mzda všetkých zamestnancov s rovnakým pracovným zaradeniom. Tabuľka Zamestnanci má 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 predchádzajúcom príklade je vyhradené slovo AS voliteľná.

Niektoré poddotazy sú povolené v krížových dotazoch – konkrétne ako predikáty (tie v klauzule WHERE). Poddotazy ako výstup (tie v zozname SELECT) nie sú povolené v krížových dotazoch.



Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.

Boli tieto informácie užitočné?

Aká je podľa vás jazyková kvalita textu?
Čo sa vám páčilo, prípadne čo nie?
Stlačením tlačidla Odoslať sa vaše pripomienky použijú na zlepšenie produktov a služieb spoločnosti Microsoft. Váš správca IT bude môcť tieto údaje zhromažďovať. Vyhlásenie o ochrane osobných údajov.

Ďakujeme za vaše pripomienky!

×