Poddotaz v rámci záznamov jednej tabuľky:
Vytvorte tabuľku s názvom „zvieratá“ v databáze.„Pridajte nasledujúci nasledujúci záznam rôznych zvierat s rôznymi vlastnosťami, ako sú zobrazené. Načítajte tento záznam pomocou dotazu SELECT takto:
>> SELECT * FROM data.zvieratá;
Príklad 01:
Načítajme obmedzené záznamy tejto tabuľky pomocou poddotazov. Pomocou nižšie uvedeného dotazu vieme, že najskôr sa vykoná poddotaz a jeho výstup sa použije v hlavnom dotaze ako vstup. Poddotaz jednoducho načíta vek, v ktorom je cena zvieraťa 2 500. Vek zvieraťa, ktorého cena je 2 500, je v tabuľke 4. Hlavný dopyt vyberie všetky záznamy tabuľky, ktorých vek je väčší ako 4, a výstup je uvedený nižšie.
>> SELECT * FROM data.zvieratá KDE Vek> (VYBERTE VEK Z údajov.zvieratá KDE Cena = „2 500“);
Príklad 02:
Použime tú istú tabuľku v rôznych situáciách. V tomto príklade použijeme v poddotaze namiesto klauzuly WHERE nejakú funkciu. Berieme priemer všetkých cien uvádzaných pre zvieratá. Priemerná cena bude 3189. Hlavný dopyt vyberie všetky záznamy o zvieratách, ktorých cena je vyššia ako 3189. Získate nižšie uvedený výstup.
>> SELECT * FROM data.zvieratá KDE Cena> (VYBERTE AVG (Cena) Z údajov.zvieratá);
Príklad 03:
Použime klauzulu IN v hlavnom dotaze SELECT. Najskôr poddotaz vyvolá ceny vyššie ako 2 500. Potom hlavný dopyt vyberie všetky záznamy tabuľky „zvieratá“, kde cena leží vo výsledku poddotazu.
>> SELECT * FROM data.zvieratá KDE Cena V (VYBERTE Cena Z údajov.zvieratá KDE Cena> 2 500);
Príklad 04:
Pomocou poddotazu sme načítali meno zvieraťa, ktorého cena je 7000. Pretože toto zviera je krava, preto sa názvu „krava“ vráti hlavný dopyt. V hlavnom dotaze sa všetky záznamy získajú z tabuľky, kde je názov zvieraťa „krava“.„Pretože máme iba dva záznamy o zvieracej„ krave “, máme k dispozícii ďalší výstup.
>> SELECT * FROM data.zvieratá KDE Meno = (VYBERTE Meno Z údajov.zvieratá KDE Cena = '7000');
Poddotaz v rámci viacerých záznamov tabuľky:
Predpokladajme, že vo vašej databáze sú uvedené dva tabuľky „študent“ a „učiteľ“. Vyskúšajme niekoľko príkladov poddotazov pomocou týchto dvoch tabuliek.
>> SELECT * FROM data.študent;>> SELECT * FROM data.učiteľ;
Príklad 01:
Načítame údaje z jednej tabuľky pomocou poddotazu a použijeme ich ako vstup pre hlavný dopyt. To znamená, že tieto dve tabuľky môžu nejakým spôsobom súvisieť. V nasledujúcom príklade sme pomocou poddotazu načítali meno študenta z tabuľky „študent“, kde je meno učiteľa „Samina“.„Tento dopyt vráti„ Saminu “učiteľovi hlavnej tabuľky dotazov.„Hlavný dopyt potom vyberie všetky záznamy týkajúce sa mena učiteľa„ Samina.„Pretože máme dva záznamy o tomto mene, máme tento výsledok.
>> SELECT * FROM data.učiteľ WHERE TeachName = (VYBERTE TeachName FROM údajov.študent WHERE TeachName = 'Samina');
Príklad 02:
Ak chcete vypracovať poddotaz v prípade rôznych tabuliek, vyskúšajte tento príklad. Máme poddotaz, ktorý načítava meno učiteľa od študenta tabuľky. Názov by mal mať hodnotu „i“ na ľubovoľnom mieste. To znamená, že všetky názvy v stĺpci TeachName, ktoré majú v hodnote „i“, budú vybrané a vrátené do hlavného dotazu. Hlavný dopyt vyberie všetky záznamy z tabuľky „učiteľ“, kde je meno učiteľa vo výstupe vrátenom poddotazom. Keďže poddotaz vrátil 4 mená učiteľov, preto budeme mať záznam o všetkých týchto menách uložených v tabuľke „učiteľ“.„
>> SELECT * FROM data.učiteľ WHERE TeachName IN (VYBERTE TeachName FROM údajov.študent WHERE TeachName LIKE '% i%');
Príklad 03:
Zvážte nasledujúce dve tabuľky „order“ a „order1“.
>> SELECT * FROM data.objednať;>> SELECT * FROM data.objednávka1;
Vyskúšajme AJKOLIEK klauzulu v tomto príklade na vypracovanie poddotazy. Poddotaz vyberie „id“ z tabuľky „order1“, kde má stĺpec „Status“ hodnotu „Unpaid“.„ID“ môže byť viac ako 1. To znamená, že do hlavného dotazu sa vráti viac ako 1 hodnota, aby sa získali výsledky tabuľky „usporiadať“. V takom prípade je možné použiť akékoľvek „id“. Pre tento dopyt máme nižšie uvedený výstup.
>> VYBERTE položku, tržby, ID Z údajov.poradie WHERE id = ANY (vybrať ID z údajov.order1 WHERE Status = 'Neplatené');
Príklad 04:
Predpokladajme, že v tabuľke „order1“ máte pred použitím ľubovoľného dotazu nižšie uvedené údaje.
>> SELECT * FROM data.objednávka1;
Použime dopyt v rámci dotazu na odstránenie niektorých záznamov z tabuľky „order1“. Najskôr poddotaz vyberie hodnotu „Stav“ z tabuľky „objednávka“, kde je položka „Kniha“.„Poddotaz vráti ako hodnotu hodnotu„ Zaplatené “. Teraz hlavný dopyt vymaže riadky z tabuľky „order1“, kde je hodnota stĺpca „Stav“ „Platené“.„
>> ODSTRÁNIŤ Z údajov.order1 WHERE Status = (VYBERTE stav Z údajov.objednať WHERE Item = 'Book');
Pri kontrole nám teraz zostali nižšie uvedené záznamy v tabuľke „order1“ po vykonaní dotazu.
>> SELECT * FROM data.objednávka1;
Záver:
Vo všetkých vyššie uvedených príkladoch ste efektívne pracovali s mnohými poddotazmi. Dúfame, že teraz je všetko jasné a čisté.