SQL-i alampäringud

NB! :  See artikkel on masintõlgitud, vaadake lahtiütlust. Selle artikli ingliskeelse versiooni leiate aadressilt (viiteks).

Alampäring on SELECT-avaldus, mis on pesastatud SELECT-, SELECT...INTO-, INSERT...INTO-, DELETE- või UPDATE-avaldusesse või mõnda teise alampäringusse.

Süntaks

Alampäringu loomiseks saate kasutada kolme erinevat süntaksivormingut.

võrdlus [ANY | ALL | SOME] (sql-lause)

avaldis [NOT] IN (sql-lause)

[NOT] EXISTS (sql-lause)

Alampäring koosneb järgmistest osadest.

Osa

Kirjeldus

võrdlus

avaldis ja võrdlusoperaator, mis võrdleb avaldist alampäringu tulemitega.

avaldis

Avaldis, mille jaoks otsitakse alampäringu tulemikogumit.

sql-lause

SELECT-avaldus, mis järgib kõikide teiste SELECT-avalduste vormingut ja reegleid. See avaldus peab olema sulgudes.


Kommentaarid

SELECT-avalduse väljaloendi või WHERE- ja HAVING-klausli avaldise asemel saate kasutada alampäringut. Alampäringus saate SELECT-avalduse abil kasutada ühte või enamat väärtust WHERE- või HAVING-klauslis hindamiseks.

Et tagastada põhipäringust kirjeid, mille võrdluskriteeriumid vastaksid alampäringu kirjetele, kasutage ANY- või SOME-predikaati (mõlemad on sünonüümsed). Järgnevas näites tagastatakse kõik tooted, mille tükihind on suurem kui mistahes 25%-lise või suurema allahindlusega müüdud toote omast.

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

Põhipäringu kirjete, mille võrdluskriteeriumid vastavad kõikidele alampäringus tagastatud kirjetele, alla laadimiseks kasutage ALL-predikaati. Kui muutsite eelnevas näitas ANY-predikaadi ALL-predikaadiks, siis tagastab päring ainult need tooted, mille tükihind on suurem kõigist 25%-lise või suurema allahindlusega müüdud toodetest. See variant on oluliselt täpsem.

Põhipäringu kirjete, mille ainult osade alampäringu kirjete väärtused on samad, tagastamiseks kasutage IN-predikaati. Järgnevas näites tagastatakse kõik 25%-lise või suurema allahindlusega tooted.

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

Põhipäringu kirjete, mille alampäringu kirjete väärtused ei ole samad, tagastamiseks kasutage eelnevaga vastupidiselt NOT IN-predikaati.

Et kindlaks määrata, kas alampäring tagastab üldse kirjeid, kasutage tõene/väär võrdlustes EXISTS-predikaati.

Samuti saate tabelipseudonüüme nimi Alampäringus tabelid väljaspool olevat Alampäringu FROM-klauslis loetletud viidata. Järgmine näide tagastab nimede töötajad, kelle palgad ei võrreldes Keskmine kõik töötajad, millel on sama ametinimetus suurem või sellega võrdne. Tabel töötajad on antud pseudonüüm "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;

reserveeritud sõna AS pole eelnevas näites oluline.

Ristpäringud on lubatud mõni alampäringud – täpsemalt predikaadina, (need WHERE-klausli). Ristpäringud alampäringud väljundina (need, VALIGE loendist) pole lubatud.



Märkus. : Masintõlke lahtiütlus. Selle artikli tõlkis arvutisüsteem ilma inimese sekkumiseta. Microsoft pakub selliseid masintõlkeid, et inglise keelt mittekõnelevad kasutajad saaksid vaadata sisu Microsofti toodete, teenuste ja tehnoloogiate kohta. Kuna artikkel on masintõlgitud, võib see sisaldada sõnavara-, süntaksi- või grammatikavigu.

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liituge Office Insideri programmiga

Kas sellest teabest oli abi?

Täname tagasiside eest!

Täname tagasiside eest! Tundub, et võiksime teid kokku viia ühega meie Office'i tugiagentidest, kes aitab teil probleemi lahendada.

×