Vpišite se z Microsoftovim
Vpišite se ali ustvarite račun.
Pozdravljeni,
Izberite drug račun.
Imate več računov
Izberite račun, s katerim se želite vpisati.

Včasih boste morda želeli uporabiti rezultate poizvedbe kot polje v drugi poizvedbi ali kot pogoj za polje poizvedbe. Recimo, da si želite ogledati interval med naročili za vsak vaš izdelke. Če želite ustvariti poizvedbo, ki prikaže ta interval, morate vsak datum naročila primerjati z drugimi datumi naročil za ta izdelek. Za primerjavo teh datumov naročila potrebujete tudi poizvedbo. To poizvedbo lahko ugnezdite v glavno poizvedbo tako, da uporabite podpoizvedba.

Podpoizvedbo lahko napišete v izraz ali v SQL (SQL) v pogled SQL.

V tem članku

Uporaba rezultatov poizvedbe kot polja v drugi poizvedbi

Podpoizvedbo lahko uporabite kot vzdevek polja. Podpoizvedbo uporabite kot vzdevek polja, ko želite uporabiti rezultate podpoizvedbe kot polje v glavni poizvedbi.

Opomba: Podpoizvedba, ki jo uporabite kot vzdevek polja, ne more vrniti več kot enega polja.

Z vzdevkom polja podpoizvedbe lahko prikažete vrednosti, ki so odvisne od drugih vrednosti v trenutni vrstici, kar ni mogoče brez podpoizvedbe.

Vrnimo se na primer, kjer si želite ogledati interval med naročili za vsak vaš izdelke. Če želite določiti ta interval, morate vsak datum naročila primerjati z drugimi datumi naročil za ta izdelek. S predlogo zbirke podatkov Northwind lahko ustvarite poizvedbo, ki prikaže te informacije.

  1. Na zavihku Datoteka kliknite Novo.

  2. V razdelku Predloge, ki so na voljo kliknite Vzorčne predloge.

  3. Kliknite Northwind in nato ustvari.

  4. Sledite navodilom na strani Northwind Traders (na zavihku predmeta Zagonski zaslon), da odprete zbirko podatkov, nato pa zaprite pogovorno okno za prijavo.

  5. Na zavihku Ustvari v skupini Poizvedbe kliknite Načrt poizvedbe.

  6. Kliknite zavihek Poizvedbe in nato dvokliknite Naročila izdelkov.

  7. Dvokliknite polje »ID izdelka« in polje »Datum naročila«, da ju dodate v mrežo načrta poizvedbe.

  8. V vrstici Razvrsti stolpca ID izdelka v mreži izberite Naraščajoče.

  9. V vrstici Razvrsti stolpca Datum naročila v mreži izberite Padajoče.

  10. V tretjem stolpcu mreže z desno tipko miške kliknite vrstico Polje in nato v priročnem meniju kliknite Povečava.

  11. V pogovornem oknu Povečava vnesite ali prilepite ta izraz:

    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])

    Ta izraz je podpoizvedba. Podpoizvedba za vsako vrstico izbere najnovejši datum naročila, ki je manj nedavni od datuma naročila, ki je že povezan z vrstico. Upoštevajte, kako s ključno besedo AS ustvarite vzdevek tabele, tako da lahko primerjate vrednosti v podpoizvedbe z vrednostmi v trenutni vrstici glavne poizvedbe.

  12. V četrti stolpec mreže v vrstico Polje vnesite ta izraz:

    Interval: [Order Date]-[Prior Date]

    Ta izraz izračuna interval med vsakim datumom naročila in datumom predhodnega naročila za ta izdelek, pri tem pa uporabi vrednost za datum, ki smo ga določili s podpoizvedbo.

  13. Na zavihku Načrt v skupini Rezultati kliknite Zaženi.

    1. Poizvedba se zažene in prikaže seznam imen izdelkov, datumov naročil, datumov predhodnih naročil in intervala med datumi naročil. Rezultati so najprej razvrščeni po ID-ju izdelka (v naraščajočem vrstnem redu) in nato po datumu naročila (v padajočem vrstnem redu).

    2. Opomba: KER je ID izdelka polje za iskanje, Access privzeto prikaže vrednosti za iskanje (v tem primeru ime izdelka) in ne dejanskih ID-jev izdelkov. Čeprav s tem spremenite vrednosti, ki se prikažejo, ne spremenite vrstnega reda razvrščanja.

  14. Zaprite zbirko podatkov Northwind.

Na vrh strani

Uporaba podpoizvedbe kot pogoja za polje poizvedbe

Podpoizvedbo lahko uporabite kot pogoj polja. Podpoizvedbo uporabite kot pogoj polja, če želite uporabiti rezultate podpoizvedbe, da omejite vrednosti, ki jih polje prikaže.

Recimo, da želite pregledati seznam naročil, ki so jih obdelali zaposleni, ki niso prodajalci . Če želite ustvariti ta seznam, morate PRIMERJATI ID zaposlenega za vsako naročilo s seznamom ID-jev zaposlenih za zaposlene, ki niso prodajni zastopniki. Če želite ustvariti ta seznam in ga uporabiti kot pogoj polja, uporabite podpoizvedbo, kot je prikazano v tem postopku:

  1. Odprite Northwind.accdb in omogočite njeno vsebino.

  2. Zaprite obrazec za prijavo.

  3. Na zavihku Ustvari v skupini Drugo kliknite Načrt poizvedbe.

  4. Na zavihku Tabele dvokliknite Naročila inzaposleni.

  5. V tabeli »Naročila« dvokliknite polje »ID zaposlenega«, polje »ID naročila« in polje »Datum naročila«, da jih dodate v mrežo načrta poizvedbe. V tabeli »Zaposleni« dvokliknite polje Naziv delovnega mesta , da ga dodate v mrežo načrta.

  6. Z desno tipko miške kliknite vrstico Pogoji stolpca ID zaposlenega in nato v priročnem meniju kliknite Povečava.

  7. V polje Povečava vnesite ali prilepite ta izraz:

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

    To je podpoizvedba. Izbere vse ID-je zaposlenih, pri katerih zaposleni nima naziva delovnega mesta prodajnega zastopnika, in ta rezultat poda glavni poizvedbi. Glavna poizvedba nato preveri, ali so ID-ji zaposlenih iz tabele »Naročila« v naboru rezultatov.

  8. Na zavihku Načrt v skupini Rezultati kliknite Zaženi.

    Poizvedba se zažene, rezultati poizvedbe pa prikazujejo seznam naročil, ki so jih obdelali zaposleni, ki niso prodajalci.

Na vrh strani

Pogoste ključne besede SQL, ki jih lahko uporabite s podpoizvedbo

S podpoizvedbo lahko uporabite več ključnih besed SQL:

Opomba: Ta seznam ni popoln. V podpoizvedbo lahko uporabite katero koli veljavno ključno besedo SQL, razen ključnih besed definicije podatkov.

  • VSE    Uporabite ALL v stavku WHERE, če želite pridobiti vrstice, ki izpolnjujejo pogoj, v primerjavi z vsako vrstico, ki jo vrne podpoizvedba.

    Recimo, da analizirate podatke o študentih na fakulteti. Študenti morajo ohraniti minimalno gpa, ki se razlikuje od glavnih do večjih. Glavni predmet in njihovi minimalni pravilniki o predmetih pravilnika skupin so shranjeni v tabeli z imenom »Glavni predmet«, ustrezni podatki o študentu pa so shranjeni v tabeli z Student_Records.

    Če si želite ogledati seznam glavnih predmetnih pravilnikov (in njihove minimalne pravilnike o predmetih pravilnika skupin), za katere vsak študent, ki ima ta glavni predmet, presega minimalno vrednost predmeta pravilnika skupine, lahko uporabite to poizvedbo:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • Katero koli    Uporabite ANY v stavku WHERE, če želite pridobiti vrstice, ki izpolnjujejo pogoj, v primerjavi z vsaj eno od vrstic, ki jih vrne podpoizvedba.

    Recimo, da analizirate podatke o študentih na fakulteti. Študenti morajo ohraniti minimalno gpa, ki se razlikuje od glavnih do večjih. Glavni predmet in njihovi minimalni pravilniki o predmetih pravilnika skupin so shranjeni v tabeli z imenom »Glavni predmet«, ustrezni podatki o študentu pa so shranjeni v tabeli z Student_Records.

    Če si želite ogledati seznam glavnih predmetih (in njihove minimalne pravilnike o predmetih pravilnika skupin), za katere kateri koli študent s tem glavnim predmetom ne izpolnjuje minimalnega pravilnika skupine, uporabite to poizvedbo:

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

    Opomba: Uporabite lahko tudi ključno besedo SOME za isti namen; ključna beseda SOME je sopomenka s any.

  • EXISTS     Funkcijo EXISTS uporabite v stavku WHERE, če želite označiti, da mora podpoizvedba vrniti vsaj eno vrstico. Če želite označiti, da podpoizvedba ne vrne nobene vrstice, lahko pred izraz OBSTAJA TUDI FUNKCIJA NOT.

    Spodnja poizvedba na primer vrne seznam izdelkov, ki so najdeni v vsaj enem obstoječem vrstnem redu:

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

    Če uporabite NOT EXISTS, poizvedba vrne seznam izdelkov, ki jih ni mogoče najti v vsaj enem obstoječem vrstnem redu:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Uporabite IN v stavku WHERE, če želite preveriti, ali je vrednost v trenutni vrstici glavne poizvedbe del nabora, ki ga vrne podpoizvedba. Pred funkcijo IN s funkcijo NOT lahko tudi predpišete, če želite preveriti, ali vrednost v trenutni vrstici glavne poizvedbe ni del nabora, ki ga vrne podpoizvedba.

    Spodnja poizvedba na primer vrne seznam naročil (z datumi naročil), ki so jih obdelali zaposleni, ki niso predstavniki prodaje:

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

    Če uporabite FUNKCIJO NOT IN, lahko isto poizvedbo napišete na ta način:

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

Na vrh strani

Ali potrebujete dodatno pomoč?

Ali želite več možnosti?

Raziščite ugodnosti naročnine, prebrskajte izobraževalne tečaje, preberite, kako zaščitite svojo napravo in še več.

Skupnosti vam pomagajo postaviti vprašanja in odgovoriti nanje, posredovati povratne informacije in prisluhniti strokovnjakom z bogatim znanjem.

Vam je bila informacija v pomoč?

Kako ste zadovoljni s kakovostjo jezika?
Kaj je vplivalo na vašo izkušnjo?
Če pritisnete »Pošlji«, bomo vaše povratne informacije uporabili za izboljšanje Microsoftovih izdelkov in storitev. Vaš skrbnik za IT bo lahko zbiral te podatke. Izjavi o zasebnosti.

Zahvaljujemo se vam za povratne informacije.

×