SQL Server Subquery (Čeština)

Summary: in this tutorial, you will learn about the SQL Server subquery and how to use the subquery for querying data.

Úvod do poddotazu na SQL Server

Poddotaz je dotaz vnořený do jiného příkazu, například SELECT, INSERT, UPDATE nebo DELETE.

Podívejme se na následující příklad.

Zvažte orders a customers tabulky ze vzorové databáze.

Následující příkaz ukazuje, jak použít poddotaz v WHERE klauzuli SELECT prohlášení k vyhledání prodejních objednávek zákazníků, kteří se nacházejí v New York:

Zde je výsledek:

V tomto příkladu je následující výrok poddotaz:

Code language: SQL (Structured Query Language) (sql)

Upozorňujeme, že SELECT dotaz poddotazu v závorkách ().

Poddotaz je známý také jako vnitřní dotaz nebo vnitřní výběr, zatímco příkaz obsahující poddotaz se nazývá an vnější výběr nebo vnější dotaz:

SQL Server provede celý výše uvedený příklad dotazu takto:

Nejprve provede poddotaz, aby získal seznam identifikačních čísel zákazníků zákazníků, kteří se nacházejí v New York.

Code language: SQL (Structured Query Language) (sql)

Zadruhé, SQL Server nahradí identifikační čísla zákazníků vrácená poddotazem v operátoru IN a provede vnější dotaz, aby získal konečnou sadu výsledků.

Jak můžete s ee, pomocí poddotazu můžete kombinovat dva kroky dohromady. Poddotaz odstraňuje potřebu výběru identifikačních čísel zákazníků a jejich zapojení do vnějšího dotazu. Samotný dotaz se navíc automaticky upraví, kdykoli se změní data zákazníka.

Vnořovací poddotaz

Poddotaz lze vnořit do jiného poddotazu. SQL Server podporuje až 32 úrovní vnoření. Zvažte následující příklad:

Nejprve SQL Server provede následující poddotaz, aby získal seznam identifikačních čísel značek značek Strider a Trek:

Zadruhé, SQL Server vypočítá průměrný ceník všech produktů, které patří těmto značkám.

Code language: SQL (Structured Query Language) (sql)

Zatřetí, SQL Server najde produkty, jejichž katalogová cena je vyšší než průměrná katalogová cena všech produktů s Strider nebo Trek značka.

Typy poddotazů serveru SQL

Poddotaz můžete použít na mnoha místech:

  • Místo výrazu
  • S IN nebo NOT IN
  • S ANY nebo ALL
  • S EXISTS nebo NOT EXISTS
  • v UPDATE, DELETE, nebo INSERT prohlášení
  • v klauzuli FROM

poddotaz na SQL Server se používá místo výrazu

Pokud poddotaz vrací jednu hodnotu, lze jej použít kdekoli, kde se použije výraz.

V následujícím příkladu se poddotaz používá jako výraz sloupce s názvem max_list_price v prohlášení SELECT.

poddotaz serveru SQL Server se používá s operátorem IN

Poddotaz, který se používá s IN vrací sadu nulových nebo více hodnot. Poté, co poddotaz vrátí hodnoty, vnější dotaz je využije.

Následující dotaz vyhledá názvy všech produktů pro horská a silniční kola, která prodejny Bike Stores prodávají.

Tento dotaz je vyhodnocen ve dvou krocích:

  1. Nejprve vnitřní dotaz vrátí seznam identifikačních čísel kategorií, které odpovídají názvům Mountain Bikes a code silničních kol.
  2. Zadruhé, tyto hodnoty jsou nahrazeny do vnějšího dotazu, který vyhledá názvy produktů, které mají identifikační číslo kategorie, s jednou z hodnot v seznamu.

Poddotaz na SQL Server se používá s JAKÝKOLI operátorem

Poddotaz se zavádí s ANY operátorem, který má následující syntaxi:

Code language: SQL (Structured Query Language) (sql)

Za předpokladu, že poddotaz vrátí seznam hodnot v1, v2, … vn. Operátor ANY vrátí TRUE, pokud některý z porovnávacích párů (scalar_expression, vi) vyhodnotí do TRUE; v opačném případě vrátí FALSE.

Například následující dotaz vyhledá produkty, jejichž ceníkové ceny jsou větší nebo rovny průměrné ceníkové ceně jakékoli značky produktu. .

Poddotaz pro každou značku najde maximální katalogovou cenu. Vnější dotaz používá tyto maximální ceny a určuje, která ceníková cena konkrétního produktu je větší nebo rovna maximální ceníkové ceně jakékoli značky.

Poddotaz na SQL Server se používá s operátorem ALL

The ALL má stejnou syntaxi jako operátor ANY:

Code language: SQL (Structured Query Language) (sql)

Operátor ALL vrátí TRUE, pokud všechny porovnávací páry (scalar_expression, vi) vyhodnotí TRUE; jinak vrátí FALSE.

Následující dotaz vyhledá produkty, jejichž katalogová cena je větší nebo rovna průměrné katalogové ceně vrácené poddotazem:

poddotaz na SQL Server se používá s EXISTUJE nebo NE EXISTUJE

Následující text ilustruje syntaxi poddotazu zavedeného operátorem EXISTS:

Code language: SQL (Structured Query Language) (sql)

Operátor EXISTS vrací TRUE, pokud výsledky vrací poddotaz; jinak vrátí FALSE.

Na druhou stranu je NOT EXISTS naproti EXISTS operátor.

Následující dotaz vyhledá zákazníky, kteří si koupili produkty v roce 2017:

Pokud místo EXISTS div použijete NOT EXISTS >, najdete zákazníky, kteří si v roce 2017 nezakoupili žádné produkty.

Poddotaz na SQL Server v klauzuli FROM

Předpokládejme, že chcete najít průměr součtu objednávek všech prodejních pracovníků. Chcete-li to provést, můžete nejprve zjistit počet objednávek od zaměstnanců:

Potom můžete na tuto sadu výsledků použít funkci AVG(). Protože dotaz vrací sadu výsledků, která vypadá jako virtuální tabulka, můžete celý dotaz umístit do klauzule FROM jiného dotazu, jako je tento:

Dotaz, který umístíte do FROM musí mít alias tabulky. V tomto příkladu jsme použili t jako alias tabulky pro poddotaz. Chcete-li přijít s konečným výsledkem, provede SQL Server následující kroky:

  • Proveďte poddotaz v klauzuli FROM.
  • Použijte výsledek poddotazu a proveďte vnější dotaz.

V tomto kurzu jste se dozvěděli o konceptu poddotazu na serveru SQL Server a o tom, jak používat různé typy poddotazů k dotazování na data.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *