Päringu pesastamine teise päringusse või avaldisse alampäringu abil

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

Mõnikord võite soovida kasutada päringu tulemeid mõne muu päringu väljana või päringuvälja kriteeriumina. Oletagem näiteks, et soovite näha kõigi oma toodete tellimuste vahelist intervalli. Seda intervalli kuvava päringu loomiseks peate võrdlema igat tellimusekuupäeva selle toote muude tellimusekuupäevadega. Nende tellimusekuupäevade võrdlemiseks on samuti vaja päringut. Saate pesastada selle päringu oma põhipäringusse alampäring abil.

Saate kirjutada alampäringu avaldis või SQL-vaade SQL-lausesse.

Selle artikli teemad

Päringutulemite kasutamine teise päringu väljana

Alampäringu kasutamine päringuvälja kriteeriumina

Alampäringus kasutatavad levinud SQL-i võtmesõnad

Päringutulemite kasutamine teise päringu väljana

Saate kasutada alampäringut välja pseudonüümina. Tehke seda siis, kui soovite kasutada alampäringu tulemeid oma põhipäringu väljana.

Märkus. : Välja pseudonüümina kasutatav alampäring ei saa tagastada mitut välja.

Alampäringu välja pseudonüüm abil saate kuvada väärtused, mis sõltuvad muude väärtuste praeguse rea, mis ei ole võimalik Alampäringu kasutamata. Näiteks, andke meile tagasi näiteks kui soovite näha tellimused oma toodete vaheline intervall. Et määrata ajavahemik, peate iga tellimuse kuupäev just selle toote jaoks muud tellimuse kuupäevade võrdlus. Malli põhjatuul 2007 abil seda teavet kuvava päringu loomine

Kuidas häälestada Northwind 2007

  1. Klõpsake Microsoft Office’i nuppu Office'i nupu pilt ning seejärel käsku Uus.

  2. Klõpsake vasakul paanil jaotises Mallide kategooriadKohalikud mallid.

  3. Klõpsake jaotises Kohalikud mallidnuppu põhjatuul 2007ja klõpsake nuppu Loo.

  4. Järgige andmebaasi avamiseks lehe Põhjatuule kaupmehed juhiseid (objektivahekaardil Tiitelkuva) ja seejärel sulgege sisselogimise dialoogiaken.

  1. Klõpsake menüü Loo jaotises Muu nuppu Päringukujundus.

  2. Klõpsake dialoogiboksis Tabeli kuvamine vahekaarti Päringud ja seejärel topeltklõpsake nuppu Toote tellimused.

  3. Sulgege dialoogiboks Tabeli kuvamine.

  4. Topeltklõpsake välja Toote ID ja välja Tellimuse kuupäev, et lisada need päringu kujundusruudustikku.

  5. Valige ruudustiku veeru Toote ID real Sordi väärtus Tõusev järjestus.

  6. Valige ruudustiku veeru Tellimuse kuupäev real Sordi väärtus Laskuv järjestus.

  7. Paremklõpsake ruudustiku kolmandas veerus rida Väli ja seejärel klõpsake kiirmenüü käsku Suum.

  8. Tippige või kleepige dialoogiboksi Suum järgmine avaldis:

    Prior Date: (SELECT MAX([Order Date]) 
    FROM [Product Orders] AS [Old Orders]
    WHERE [Old Orders].[Order Date]
    < [Product Orders].[Order Date]
    AND [Old Orders].[Product ID]
    = [Product Orders].[Product ID])

    See avaldis on alampäring. Alampäring valib iga rea puhul hiliseima tellimusekuupäeva, mis on varasem kui juba reaga seotud tellimusekuupäev. Pange tähele võtmesõna AS kasutust tabeli pseudonüümi loomisel nii, et saate võrrelda alampäringu väärtusi põhipäringu praeguse rea väärtustega.

  9. Tippige ruudustiku neljanda veeru reale Väli järgmine avaldis:

Interval: [Order Date]-[Prior Date]

See avaldis arvutab iga tellimusekuupäeva ja vastava toote eelmise tellimusekuupäeva vahelise intervalli, kasutades selleks alampäringu abil määratletud eelmise kuupäeva väärtust.

  1. Klõpsake menüü Kujundus jaotises Tulemid nuppu Käivita.

    Päring käivitab ja kuvab loendi tootenimede, tellimusekuupäevade, eelmiste tellimusekuupäevade ja tellimusekuupäevade vaheliste intervallidega. Tulemid sorditakse esmalt (tõusvas järjestuses) toote ID ja seejärel (laskuvas järjestuses) tellimuse kuupäeva järgi.

    Märkus. : Kuna Toote ID on otsinguväli, kuvab Access vaikimisi otsinguväärtused (antud juhul tootenime), mitte tegelikud toote-ID-d. Kuigi see muudab kuvatavaid väärtusi, et muuda see sortimisjärjestust.

  2. Sulgege andmebaas Põhjatuul.

Lehe algusse

Alampäringu kasutamine päringuvälja kriteeriumina

Saate kasutada alampäringut välja kriteeriumina. Tehke seda siis, kui soovite alampäringu tulemite abil piirata väljal kuvatavaid väärtusi.

Oletagem näiteks, et soovite läbi vaadata selliste tellimuste loendit, mida töötlesid töötajad, kes pole müügiesindajad. Selle loendi loomiseks peate võrdlema iga tellimuse töötaja ID-d nende töötajate töötaja-ID-de loendiga, kes pole müügiesindajad. Selle loendi saate luua ja seda väljakriteeriumina kasutada alampäringu abil, nagu on kirjeldatud järgmises toimingus.

  1. Avage Northwind 2007.accdb ja selle sisu lubada.

  2. Sulgege sisselogimisvorm.

  3. Klõpsake menüü Loo jaotises Muu nuppu Päringukujundus.

  4. Topeltklõpsake dialoogiboksi Tabeli kuvamine vahekaardil Tabelid väärtusi Tellimused ja Töötajad.

  5. Sulgege dialoogiboks Tabeli kuvamine.

  6. Topeltklõpsake tabelis Tellimused välju Töötaja ID, Tellimuse ID ja Tellimuse kuupäev, et lisada need päringu kujundusruudustikku. Topeltklõpsake tabelis Töötajad välja Ametinimetus, et lisada see kujundusruudustikku.

  7. Paremklõpsake veeru Töötaja ID rida Kriteeriumid ja seejärel klõpsake kiirmenüü käsku Suum.

  8. Tippige või kleepige väljale Suum järgmine avaldis:

    IN (SELECT [ID] FROM [Employees] 
    WHERE [Job Title]<>'Sales Representative')

    See on alampäring. See valib kõigi töötajate ID-d, kelle ametinimetus pole müügiesindaja, ja esitab saadud tulemikomplekti põhipäringule. Seejärel kontrollib põhipäring, kas tulemikomplektis on tabeli Tellimused töötaja-ID-sid.

  9. Klõpsake menüü Kujundus jaotises Tulemid nuppu Käivita.

    Päring käivitatakse ja päringutulemina kuvatakse selliste tellimuste loend, mida töötlesid töötajad, kes pole müügiesindajad.

Lehe algusse

Alampäringus kasutatavad levinud SQL-i võtmesõnad

Alampäringus saate kasutada mitmesuguseid SQL-i võtmesõnu.

Märkus. : See loend pole lõplik. Alampäringus saate kasutada mis tahes kehtivaid SQL-i võtmesõnu, välja arvatud andmemääratluse võtmesõnu.

  • ALL    – võtmesõna ALL saate kasutada WHERE-klauslis selliste ridade toomiseks, mis vastavad tingimusele alampäringuga tagastatud ridadega võrdlemisel.

    Oletagem näiteks, et analüüsite ülekooli üliõpilaste andmeid. Üliõpilased peavad saama vähemalt minimaalse keskmise hinde, mis on põhiaineti erinev. Põhiaineid ja nende minimaalseid keskmisi hindeid talletatakse tabelis nimega Põhiained ning asjakohast teavet üliõpilaste kohta talletatakse tabelis nimega Üliõpilaste_kirjed.

    Kui soovite näha põhiainete (ja nende minimaalsete keskmiste hinnete) loendit, mille puhul iga selle põhiaine üliõpilane ületab minimaalse keskmise hinde, võite kasutada järgmist päringut:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • ANY    – võtmesõna ANY saate kasutada WHERE-klauslis selliste ridade toomiseks, mis vastavad tingimusele vähemalt ühe alampäringu tagastatava reaga võrdlemisel.

    Oletagem näiteks, et analüüsite ülekooli üliõpilaste andmeid. Üliõpilased peavad saama vähemalt minimaalse keskmise hinde, mis on põhiaineti erinev. Põhiaineid ja nende minimaalseid keskmisi hindeid talletatakse tabelis nimega Põhiained ning asjakohast teavet üliõpilaste kohta talletatakse tabelis nimega Üliõpilaste_kirjed.

    Kui soovite näha põhiainete (ja nende minimaalsete keskmiste hinnete) loendit, mille puhul mõne selle põhiaine üliõpilase tulemus on allpool minimaalset keskmist hinnet, võite kasutada järgmist päringut:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] > ANY
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);

    Märkus. : Võtmesõna SOME saate kasutada samal otstarbel - see võtmesõna on võtmesõna ANY sünonüüm.

  • EXISTS    – võtmesõna EXISTS saate kasutada WHERE-klauslis, näitamaks, et alampäring peab tagastama vähemalt ühe rea. Võite sisestada võtmesõna EXISTS ette ka sõna NOT, kui soovite näidata, et alampäring ei tohi tagastada ühtegi rida.

    Näiteks järgmine päring tagastab loendi toodetest, mis leiduvad vähemalt ühes olemasolevas tellimuses:

    SELECT *
    FROM [Products]
    WHERE EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);

    Võtmesõna NOT EXISTS kasutamisel tagastab päring loendi toodetest, mida ei leidu üheski olemasolevas tellimuses:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    – võtmesõna IN saate kasutada WHERE-klauslis, tagamaks, et põhipäringu praeguse rea väärtus kuulub alampäringu tagastatavasse komplekti. Võite sisestada võtmesõna IN ette ka sõna NOT, kui soovite, et põhipäringu praeguse rea väärtus ei kuuluks alampäringu tagastatavasse komplekti.

    Näiteks järgmine päring tagastab loendi tellimustest (koos tellimusekuupäevadega), mida töötlesid töötajad, kes pole müügiesindajad:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]<>'Sales Representative');

    Võtmesõna NOT IN abil saate kirjutada sama päringu järgmiselt:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] NOT IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]='Sales Representative');

Lehe algusse

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.

×