Obsah
Poddotky sú dotazy vnorené do iného. Umožňujú vám oddeliť časť vety a poskytnúť čitateľnejšiu alternatívu k operáciám, ktoré môžu vyžadovať komplexné spojenia a odbory. Poddotky v MySQL môžu vrátiť hodnotu, riadok, stĺpec alebo tabuľku údajov.
Na vytvorenie čitateľnejších a kompaktnejších viet použite poddotazy (Obrázky Thinkstock / Comstock / Getty Images)
Syntax
Základná syntax poddotazu je nasledovná:
SELECT * FROM table1 WHEE columnA = (VYBRAŤ stĺpec B Z tabuľky2) GO
Poddotky by sa mali skladať z príkazu "SELECT", "INSERT", "UPDATE", "DELETE", "SET" alebo "DO" a tabuľku nemôžete meniť a používať v rámci poddotazu naraz. Poddotazy sa zvyčajne používajú na pravej strane klauzuly WHERE, ktorá môže obsahovať ktorýkoľvek z porovnávacích a logických operátorov, ako napríklad = (rovný), <> (odlišný), <= (menší alebo rovný),> = alebo "BETWEEN" (medzi dvoma hodnotami), "NOT", "AND" a "OR". Môžete tiež použiť kľúčové slová „DISTINCT“, „GROUP BY“, „ORDER BY“ a „LIMIT“ a dokonca kombinovať s príkazmi „JOIN“. Okrem podrobných obmedzení je pri písaní poddotkov v MySQL málo obmedzení.
Neexistuje ani obmedzenie počtu poddotkov uskutočnených v rámci vety. Viac informácií o poddotazoch nájdete v referenčnom manuáli MySQL (pozrite časť "Zdroje").
príklad
Predpokladajme, že máte dve tabuľky: jednu s priezviskom a priezviskom, adresu a poštové smerovacie číslo členov zoznamu adries a jedno s mestami, štátmi a PSČ. Na nájdenie mien členov žijúcich v Brazílii je možné použiť viacero „vybraných“ viet. Prvý z nich bude hľadať CEP Brasília:
VYBERTE Z OD KÓDOV WHERE state = "BRASILIA" GO
Potom použite „select“ pre každé nájdené PSČ:
SELECT meno, priezvisko FROM adresy WHERE cep = [codecep] GO
Táto metóda je časovo náročná a ľahko sa robí chyby. Je ľahké stratiť poštové smerovacie číslo, najmä ak je ich príliš veľa. Jednoduchšia cesta na dokončenie tejto úlohy je použiť prvú vetu ako poddotaz v rámci druhej:
SELECT meno, priezvisko FROM adresy WHERE cep = (SELECT cep FROM kódy WHERE state = "BRASILIA") GO
Tento dotaz zobrazí všetkým členom vášho mailing listu, ktorí žijú v Brazílii.