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

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 <token>TE000126768</token> abil.

Saate kirjutada alampäringu <token>TE000127167</token> või <token>TE000126761</token> SQL-lausesse.

Selle artikli teemad

<link xlink:href="a8532322-e42f-4f94-bc38-ace7c182916a#bm1">Päringutulemite kasutamine teise päringu väljana</link>

<link xlink:href="a8532322-e42f-4f94-bc38-ace7c182916a#bm2">Alampäringu kasutamine päringuvälja kriteeriumina</link>

<link xlink:href="a8532322-e42f-4f94-bc38-ace7c182916a#bm3">Alampäringus kasutatavad levinud SQL-i võtmesõnad</link>

Päringutulemite kasutamine teise päringu väljana

Võite kasutada alampäringut välja aliasena. 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äljapseudonüümi abil saate kuvada väärtusi, mis sõltuvad praeguse rea muudest väärtustest. See pole alampäringut kasutamata võimalik.

Naaskem näite juurde, kus soovisite näha oma kõigi toodete tellimuste intervalli. Selle intervalli määratlemiseks peate võrdlema igat tellimusekuupäeva vastava toote muude tellimusekuupäevadega. Saate luua seda teavet kuvava päringu andmebaasimalli Põhjatuul abil.

  1. Klõpsake menüü <ui>Fail</ui> nuppu <ui>Uus</ui>.

  2. Klõpsake jaotises <ui>Saadaolevad mallid</ui> nuppu <ui>Näidismallid</ui>.

  3. Klõpsake käsku <ui>Põhjatuul</ui> ja seejärel nuppu <ui>Loo</ui>.

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

  5. Klõpsake menüü <ui>Loo</ui> jaotises <ui>Päringud</ui> nuppu <ui>Päringukujundus</ui>.

  6. Klõpsake dialoogiboksis <ui>Tabeli kuvamine</ui> vahekaarti <ui>Päringud</ui> ja seejärel topeltklõpsake nuppu <ui>Toote tellimused</ui>.

  7. Sulgege dialoogiboks <ui>Tabeli kuvamine</ui>.

  8. Topeltklõpsake välja <ui>Toote ID</ui> ja välja <ui>Tellimuse kuupäev</ui>, et lisada need päringu kujundusruudustikku.

  9. Valige ruudustiku veeru <ui>Toote ID</ui> real <ui>Sordi</ui> väärtus <ui>Tõusev järjestus</ui>.

  10. Valige ruudustiku veeru <ui>Tellimuse kuupäev</ui> real <ui>Sordi</ui> väärtus <ui>Laskuv järjestus</ui>.

  11. Paremklõpsake ruudustiku kolmandas veerus rida <ui>Väli</ui> ja seejärel klõpsake kiirmenüü käsku <ui>Suum</ui>.

  12. Tippige või kleepige dialoogiboksi <ui>Suum</ui> 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.

  13. Tippige ruudustiku neljanda veeru reale <ui>Väli</ui> järgmine avaldis:

    <codeInline>Interval: [Order Date]-[Prior Date]</codeInline>

    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.<br />

  14. Klõpsake menüü <ui>Kujundus</ui> jaotises <ui>Tulemid</ui> nuppu <ui>Käivita</ui>.

    1. 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.

    2. 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.

  15. Sulgege andmebaas Põhjatuul.

<link xlink:href="a8532322-e42f-4f94-bc38-ace7c182916a#__top">Lehe algusse</link>

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 <legacyItalic>pole</legacyItalic> 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 andmebaas Põhjatuul ja lubage selle sisu.

  2. Sulgege sisselogimisvorm.

  3. Klõpsake menüü <ui>Loo</ui> jaotises <ui>Muu</ui> nuppu <ui>Päringukujundus</ui>.

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

  5. Sulgege dialoogiboks <ui>Tabeli kuvamine</ui>.

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

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

  8. Tippige või kleepige väljale <ui>Suum</ui> 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üü <ui>Kujundus</ui> jaotises <ui>Tulemid</ui> nuppu <ui>Käivita</ui>.

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

<link xlink:href="a8532322-e42f-4f94-bc38-ace7c182916a#__top">Lehe algusse</link>

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.

  • <embeddedLabel>ALL</embeddedLabel> – 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]);
  • <embeddedLabel>ANY</embeddedLabel> – 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.

  • <embeddedLabel>EXISTS</embeddedLabel> – 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]);
  • <embeddedLabel>IN</embeddedLabel> – 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');

<link xlink:href="a8532322-e42f-4f94-bc38-ace7c182916a#__top">Lehe algusesse</link>

Täiendage Office'i kasutamise 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.

×