Vgnezditev poizvedbe v drugo poizvedbo ali izraz s podpoizvedbo

Pomembno : Besedilo članka je prevedeno strojno. Glejte zavrnitev odgovornosti. Angleško različico tega članka najdete tukaj .

Morda želite rezultate poizvedbe uporabiti kot polje v drugi poizvedbi ali kot pogoj za polje poizvedbe. Recimo, da na primer želite prikazati časovni interval med naročili za vsak izdelek. Za poizvedbo, ki prikaže ta interval, morate primerjati vsak datum naročila z drugimi datumi naročila določenega izdelka. Tudi za primerjavo datumov potrebujete poizvedbo. To poizvedbo lahko vgnezdite znotraj glavne poizvedbe, in sicer s podpoizvedba.

Podpoizvedbo lahko zapišete v izraz ali v izjavi s standardom SQL (Structured Query Language) v pogled SQL.

Opomba : V tem članku se ne nanaša na Accessove programe – nova vrsta zbirke podatkov, načrtovanje s programom Access in objavi v spletu. Če želite več informacij, glejte Ustvarjanje spletnega Accessa .

V tem članku

Uporaba rezultatov poizvedbe kot polja v drugi poizvedbi

Uporaba podpoizvedbe kot pogoja za polje poizvedbe

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

Uporaba rezultatov poizvedbe kot polja v drugi poizvedbi

Podpoizvedbo lahko uporabite kot vzdevek polja. Uporaba podpoizvedbe kot vzdevek polja, če želite uporabiti podpoizvedbo rezultatov kot polja v glavni poizvedbe.

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

Vzdevek polja s podpoizvedbo uporabite, ko želite prikazati vrednosti, ki so odvisne od drugih vrednosti v trenutni vrstici, to pa ni mogoče brez uporabe podpoizvedbe.

Vrnimo se k primeru, kjer želite prikazati interval med naročili posameznega izdelka. Ta interval določite tako, da primerjate datum vsakega naročila z drugimi datumi naročil za ta izdelek. Poizvedbo s temi podatki lahko ustvarite s predlogo zbirke podatkov Northwind.

Kako nastavim predlogo Northwind

  1. Na zavihku Datoteka kliknite Novo.

  2. V razdelku Predloge, ki so na voljo kliknite Vzorci predlog.

  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.

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

  2. V pogovornem oknu Pokaži tabelo kliknite zavihek Poizvedbe in dvokliknite Naročila izdelkov.

  3. Zaprite pogovorno okno Pokaži tabelo.

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

  5. Na mreži v stolpcu ID izdelka v vrstici Razvrsti izberite Naraščajoče.

  6. Na mreži v stolpcu Datum naročila v vrstici Razvrsti izberite Padajoče.

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

  8. 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. Za vsako vrstico podpoizvedba izbere najpoznejši datum naročila, ki je zgodnejši od datuma naročila, ki je že povezan z vrstico. Oglejte si, kako s ključno besedo AS ustvarite vzdevek tabele, da lahko primerjate vrednosti v podpoizvedbi z vrednostmi trenutne vrstice v glavni poizvedbi.

  1. V četrtem stolpcu mreže v vrstico Polje vnesite ta izraz:

    Interval: [Order Date]-[Prior Date]

Izraz izračuna interval med vsakim datumom naročila in prejšnjim datumom naročila izbranega izdalka, uporabi pa vrednost za prejšnji datum, ki smo jo določili s podpoizvedbo.

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

    1. Poizvedba se izvede in prikaže seznam imen izdelkov, datumov naročila, prejšnjih datumov naročila in intervalov 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 izdelka. Čeprav se s tem spremenijo prikazane vrednosti, se ne spremeni vrstni red razvrstitve.

  2. Zaprite zbirko podatkov Northwind.

Na vrh strani

Uporaba podpoizvedbe kot pogoja za polje poizvedbe

Uporabite lahko podpoizvedbe kot pogoja polja. Uporaba podpoizvedbe kot pogoja za polje, če želite z rezultati podpoizvedbe omejite vrednosti, ki v polju je prikazan.

Recimo, da na primer želite prikazati seznam naročil, ki so jih obdelali zaposleni, ki niso prodajni zastopniki. Če želite ustvariti ta seznam, morate primerjati ID zaposlenega v vsakem naročilu s seznamom ID-jev zaposlenih, ki niso prodajni zastopniki. Spodaj je prikazano, kako z uporabo podpoizvedbe ustvarite seznam in ga uporabite kot pogoj v polju:

  1. Odprite zbirko podatkov Northwind in omogočite njeno vsebino.

  2. Zaprite obrazec za prijavo.

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

  4. V pogovornem oknu Pokaži tabelo na zavihku Tabele dvokliknite Naročila in Zaposleni.

  5. Zaprite pogovorno okno Pokaži tabelo.

  6. V tabeli naročil dvokliknite polja ID zaposlenega, ID naročila in Datum naročila, da jih dodate v mrežo načrta poizvedbe. V tabeli zaposlenih dvokliknite polje Naziv, da ga dodate v mrežo načrta.

  7. Z desno tipko miške kliknite vrstico Pogoji v stolpcu »ID zaposlenega«, nato pa v priročnem meniju kliknite Povečava.

  8. 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, katerih naziv ni »prodajni zastopnik«, in nabor rezultatov vnese v glavno poizvedbo. Nato glavna poizvedba preveri, ali so ID-ji zaposlenih iz tabele naročil prisotni v naboru rezultatov.

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

    Poizvedba se izvede in rezultati so prikazani na seznamu naročil, ki so jih obdelali zaposleni, ki niso prodajni zastopniki.

Na vrh strani

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

Na voljo je nekaj ključnih besed SQL, ki jih lahko uporabite s podpoizvedbo.

Opomba : Ta seznam ni popoln. V podpoizvedbi lahko uporabite poljubno veljavno ključno besedo SQL, razen ključnih besed za definicijo podatkov.

  • ALL    Ključno besedo ALL uporabite v stavku WHERE, če želite pridobiti vrstice, ki ustrezajo pogoju v primerjavi z vsako vrstico, ki jo vrne podpoizvedba.

    Recimo, da na primer analizirate podatke o študentih na fakulteti. Študenti morajo imeti minimalno povprečno oceno (PO), ki se razlikuje od predmeta do predmeta. Predmeti in minimalne povprečne ocene so shranjene v tabeli »Predmeti«, podatki o študentih pa so shranjeni v tabeli »Podatki_študentov«.

    Če želite prikazati seznam predmetov (in njihovih minimalnih povprečnih ocen), v katerem imajo vsi študenti s tem predmetom višjo povprečno oceno od minimalne, uporabite to poizvedbo:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • ANY    Ključno besedo ANY uporabite v stavku WHERE, ko želite prikazati vrstice, ki ustrezajo pogoju, ko jih primerjate vsaj z eno vrstico, ki jo vrne podpoizvedba.

    Recimo, da na primer analizirate podatke o študentih na fakulteti. Študenti morajo imeti minimalno povprečno oceno (PO), ki se razlikuje od predmeta do predmeta. Predmeti in minimalne povprečne ocene so shranjene v tabeli »Predmeti«, podatki o študentih pa so shranjeni v tabeli »Podatki_študentov«.

    Če želite prikazati seznam predmetov (in njihovih minimalnih povprečnih ocen), v katerem ima poljuben študent s tem predmetom nižjo povprečno oceno od minimalne, 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 : Na enak način uporabite ključno besedo SOME, ki ima enak pomen kot ANY.

  • EXISTS    Ključno besedo EXISTS uporabite v stavku WHERE, ko želite, da podpoizvedba vrne vsaj eno vrstico. Pred ključno besedo EXISTS lahko vnesete tudi NOT, kar pomeni, da podpoizvedba ne sme vrniti nobene vrstice.

    Spodnja poizvedba na primer vrne seznam izdelkov, ki so prisotni v vsaj enem naročilu:

    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 niso najdeni vsaj v enem obstoječem naročilu:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Ključno besedo IN uporabite v stavku WHERE, ko se želite prepričati, da je vrednost v trenutni vrstici glavne poizvedbe del nabora, ki ga vrne podpoizvedba. Pred ključno besedo IN lahko vnesete tudi NOT, da se prepričate, da vrednost v trenutni vrstici glavne poizvedbe ni del nabora, ki ga vrne podpoizvedba.

    Spodnja poizvedba na primer vrne seznam naročil (z datumi), ki so jih obravnavali zaposleni, ki niso prodajni zastopniki:

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

    Če uporabite NOT IN, lahko isto poizvedbo zapišete tako:

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

Na vrh strani

Opomba : Strojni prevod – zavrnitev odgovornosti: Ta članek je bil preveden z računalniškim programom brez človeškega posredovanja. Microsoft skuša s strojno prevedenimi članki vsebino o Microsoftovih izdelkih, storitvah in tehnologijah približati osebam, ki ne razumejo angleščine. Ker je bil članek strojno preveden, so lahko v njem jezikovne, slovnične in pravopisne napake.

Razširite svoja znanja
Oglejte si izobraževanje
Prvi dobite nove funkcije
Pridružite se programu Office Insider

Vam je bila informacija v pomoč?

Zahvaljujemo se vam za povratne informacije.

Zahvaljujemo se vam za povratne informacije. Videti je, da bi vam prišla prav pomoč enega od naših Officeovih agentov za podporo.

×