Logige sisse Microsofti kontoga
Logige sisse või looge konto.
Tere!
Valige mõni muu konto.
Teil on mitu kontot
Valige konto, millega soovite sisse logida.

Mõnikord võib teil tekkida soov kasutada päringu tulemeid mõne muu päringu väljana või päringuvälja kriteeriumina. Oletagem näiteks, et soovite näha iga toote tellimuste vahelist intervalli. Seda intervalli kuvava päringu loomiseks peate võrdlema iga tellimuse kuupäeva selle toote muude tellimuskuupäevadega. Nende tellimuskuupäevade võrdlemiseks on vaja ka päringut. Saate selle päringu pesastada oma põhipäringusse, kasutades alampäring.

Alampäringu saate kirjutada avaldis või Structured Query Language (SQL) lausesse SQL-vaade.

Selle artikli teemad

Päringutulemite kasutamine teise päringu väljana

Alampäringuid saate kasutada välja pseudonüümina. Kui soovite alampäringu tulemeid kasutada põhipäringu väljana, kasutage alampäringuid välja pseudonüümina.

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

Alampäringu välja pseudonüümi abil saate kuvada väärtusi, mis sõltuvad praeguse rea muudest väärtustest, mis pole võimalik ilma alampäringuta.

Näiteks naaskem näitesse, kus soovite näha iga toote tellimuste vahelist intervalli. Selle intervalli määramiseks peate võrdlema iga tellimuse kuupäeva selle toote muude tellimiskuupäevadega. Andmebaasimalli Northwindi abil saate luua päringu, mis kuvab seda teavet.

  1. Klõpsake menüü Fail käsku Uus.

  2. Klõpsake jaotises Saadaolevad mallid nuppu Näidismallid.

  3. Klõpsake nuppu Põhjatuule ja seejärel nuppu Loo.

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

  5. Klõpsake menüü Loo jaotises Päringud nuppu Päringu kujundus.

  6. Klõpsake vahekaarti Päringud ja seejärel topeltklõpsake valikut Tootetellimused.

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

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

  9. Valige ruudustiku veeru Tellimuse kuupäev real Sortimine käsk Laskuvas järjestuses.

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

  11. Tippige või kleepige dialoogiboksis 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 jaoks viimase tellimuse kuupäeva, mis on vähem hilisem kui reaga seostatud tellimuse kuupäev. Pange tähele, kuidas kasutate võtmesõna AS tabeli pseudonüümi loomiseks, et saaksite alampäringu väärtusi võrrelda põhipäringu praeguse rea väärtustega.

  12. Tippige ruudustiku neljandasse veergu reale Väli järgmine avaldis:

    Interval: [Order Date]-[Prior Date]

    See avaldis arvutab iga tellimiskuupäeva ja selle toote eelneva tellimiskuupäeva vahelise intervalli, kasutades alampäringuga määratletud varasema kuupäeva väärtust.

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

    1. Päring käivitab ja kuvab tootenimede, tellimusekuupäevade, eelnevate tellimuste kuupäevade ja tellimuskuupäevade vahelise intervalli loendi. Tulemid sorditakse esmalt toote ID järgi (tõusvas järjestuses) ja seejärel tellimuse kuupäeva järgi (laskuvas järjestuses).

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

  14. Sulgege andmebaas Northwind.

Lehe algusse

Alampäringu kasutamine päringuvälja kriteeriumina

Alampäringuid saate kasutada väljakriteeriumina. Kui soovite alampäringu tulemite abil piirata välja kuvatavaid väärtusi, kasutage väljakriteeriumina alampäringuid.

Oletagem näiteks, et soovite läbi vaadata nende tellimuste loendi, mida töötlesid töötajad, kes pole müügiesindajad. Selle loendi loomiseks peate võrdlema iga tellimuse töötajate ID-sid nende töötajate ID-dega, kes pole müügiesindajad. Loendi loomiseks ja selle kasutamiseks väljakriteeriumina saate kasutada alampäringuid, nagu on näidatud järgmises toimingus.

  1. Avage northwind.accdb ja lubage selle sisu.

  2. Sulgege sisselogimisvorm.

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

  4. Topeltklõpsake vahekaardil Tabelid valikut Tellimused ja Töötajad.

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

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

  7. 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õik töötaja ID-d, kus töötajal pole müügiesindaja ametinimetust, ja tarned, mille tulem on seatud põhipäringusse. Seejärel kontrollib põhipäring, kas tabeli Tellimused töötajate ID-d on tulemikomplektis.

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

    Päring käivitub ja päringutulemites kuvatakse nende tellimuste loend, mida töötlesid töötajad, kes pole müügiesindajad.

Lehe algusse

Levinud SQL-märksõnad, mida saate alampäringuga kasutada

Alampäringu puhul saate kasutada mitut SQL-i märksõna.

Märkus.: Loend pole ammendav. Alampäringus saate kasutada mis tahes kehtivat SQL-märksõna, v.a andmekirjeldusmärksõnad.

  • KÕIK    Kasutage WHERE-klauslis all-klauslit, et tuua tingimusele vastavad read, võrreldes iga alampäringu tagastatud reaga.

    Oletagem näiteks, et analüüsite üliõpilase andmeid kõrgkoolis. Õpilased peavad säilitama minimaalse GPA, mis varieerub suurtest suuremateni. Põhierialad ja nende minimaalsed GPI-d talletatakse tabelis "Põhierialad" ja asjakohane õpilaste teave talletatakse tabelis nimega Student_Records.

    Selliste põhierinevuste (ja nende minimaalsete GPA-de) loendi kuvamiseks, mille jaoks iga selle põhieriala õppur ületab minimaalse GPA, saate 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]);
  • SUVALINE    Kasutage WHERE-klauslis atribuuti ANY, et tuua tingimusele vastavad read, võrreldes vähemalt ühe alampäringu tagastatud reaga.

    Oletagem näiteks, et analüüsite üliõpilase andmeid kõrgkoolis. Õpilased peavad säilitama minimaalse GPA, mis varieerub suurtest suuremateni. Põhierialad ja nende minimaalsed GPI-d talletatakse tabelis "Põhierialad" ja asjakohane õpilaste teave talletatakse tabelis nimega Student_Records.

    Selliste põhierinevuste (ja nende minimaalsete GPA-de) loendi kuvamiseks, mille miinimumile vastava põhieriala õppurid ei vasta miinimumile GPA-le, 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.: Samal eesmärgil saate kasutada ka MÕNDA märksõna; the SOME keyword is sünonymous with ANY.

  • EXISTS     Kasutage WHERE-klauslis funktsiooni EXISTS, et näidata, et alampäring peaks tagastama vähemalt ühe rea. Kui soovite näidata, et alampäring ei peaks ridu tagastama, võite kasutada ka eesliidet EXISTS koos märgiga NOT.

    Näiteks järgmine päring tagastab vähemalt ühes olemasolevas järjestuses olevate toodete loendi:

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

    Kasutades suvandit POLE OLEMAS, tagastab päring nende toodete loendi, mida ei leidu vähemalt ühes olemasolevas järjestuses:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Kasutage WHERE-klauslis funktsiooni IN, et kontrollida, kas põhipäringu praeguse rea väärtus on osa alampäringu tagastatavast komplektist. Kui soovite kontrollida, kas põhipäringu praeguses reas olev väärtus ei kuulu alampäringu tagastatavasse komplekti, saate eesliite IN lisada ka funktsioonile NOT.

    Näiteks järgmine päring tagastab loendi tellimustest (koos tellimuse kuupä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');

    Funktsiooni 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

Kas vajate veel abi?

Kas soovite rohkem valikuvariante?

Siin saate tutvuda tellimusega kaasnevate eelistega, sirvida koolituskursusi, õppida seadet kaitsma ja teha veel palju muud.

Kogukonnad aitavad teil küsimusi esitada ja neile vastuseid saada, anda tagasisidet ja saada nõu rikkalike teadmistega asjatundjatelt.

Kas sellest teabest oli abi?

Kui rahul te keelekvaliteediga olete?
Mis mõjutas teie hinnangut?
Kui klõpsate nuppu Edasta, kasutatakse teie tagasisidet Microsofti toodete ja teenuste täiustamiseks. IT-administraator saab neid andmeid koguda. Privaatsusavaldus.

Täname tagasiside eest!

×