Ponekad možda želite koristiti rezultate upita kao polje u drugom upitu ili kao kriterij za polje upita. Pretpostavimo, primjerice, da želite vidjeti interval između narudžbi za svaki proizvod. Da biste stvorili upit koji sadrži taj interval, morate usporediti svaki Datum narudžbe s drugim datumom narudžbe za taj proizvod. Uspoređivanje tih datuma narudžbe zahtijeva i upit. Ovaj upit možete gniježditi unutar glavnog upita pomoću podupit.

Podupit možete upisati u izraz ili u strukturiranoj izjavi za upit Language (SQL) u SQL prikaz.

Sadržaj članka

Korištenje rezultata upita kao polja u drugom upitu

Možete koristiti podupit kao pseudonim polja. Koristite podupit kao pseudonim polja kada želite koristiti rezultate podupita kao polje u glavnom upitu.

Napomena: Podupit koji koristite kao pseudonim polja ne može vratiti više od jednog polja.

Naziv polja podupita možete koristiti za prikaz vrijednosti koje ovise o drugim vrijednostima u postojećem retku, što nije moguće bez korištenja podupita.

Na primjer, vratimo se na primjer u kojem želite vidjeti interval između narudžbi za svaki proizvod. Da biste odredili taj interval, morate usporediti svaki Datum narudžbe s drugim datumom narudžbe za taj proizvod. Možete stvoriti upit koji prikazuje te podatke pomoću predloška baze podataka Northwind.

  1. Na kartici Datoteka kliknite Novo.

  2. U odjeljku dostupni predlošcikliknite ogledni Predlošci.

  3. Kliknite Northwind, a zatim Stvori.

  4. Slijedite upute na stranici Northwind Traders (na kartici objekta Početni zaslon) da biste otvorili bazu podataka, a zatim zatvorite prozor dijaloškog okvira za prijavu.

  5. Na kartici Stvaranje u grupi Upiti kliknite Dizajn upita.

  6. Kliknite karticu upiti , a zatim dvokliknite narudžbe proizvoda.

  7. Dvokliknite polje ID proizvoda i polje Datum narudžbe da biste ih dodali u rešetku dizajna upita.

  8. U retku Sortiranje stupca ID uređaja u rešetki odaberite Uzlazno.

  9. U retku Sortiranje stupca rešetke Datum narudžbe odaberite Silazno.

  10. U trećem stupcu rešetke desnom tipkom miša kliknite redak polja , a zatim na izborničkom prečacu kliknite Zumiranje .

  11. U dijaloškom okviru Zumiranje upišite ili zalijepite sljedeći 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])

    Ovaj je izraz podupit. Podupit za svaki redak odabire najnoviji datum narudžbe koji je manje nedavno od datuma narudžbe koji je već pridružen retku. Imajte na čemu koristiti ključnu riječ AS da biste stvorili pseudonim tablice tako da možete usporediti vrijednosti u podizvoču na vrijednosti u trenutnim recima glavnog upita.

  12. U četvrtom stupcu rešetke u retku polje upišite sljedeći izraz:

    Interval: [Order Date]-[Prior Date]

    Ovaj izraz izračunava interval između svakog datuma narudžbe i datuma prethodnog naloga za taj proizvod, pomoću vrijednosti za prethodni datum koji smo definirali pomoću podupita.

  13. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

    1. Upit se pokreće i prikazuje popis naziva proizvoda, datuma narudžbe, prethodnih datuma narudžbe i intervala između datuma narudžbe. Rezultati se sortiraju prvi prema ID-u proizvoda (uzlaznim redoslijedom), a zatim po datumu narudžbe (silaznim redoslijedom).

    2. Napomena: Budući da je ID proizvoda polje za pretraživanje, prema zadanim postavkama, Access prikazuje vrijednosti pretraživanja (u ovom slučaju naziv proizvoda), a ne stvarne ID-ove proizvoda. Iako to mijenja vrijednosti koje se prikazuju, ne mijenja redoslijed sortiranja.

  14. Zatvaranje baze podataka Northwind.

Vrh stranice

Korištenje podupita kao kriterija za polje upita

Možete koristiti podupit kao kriterij polja. Koristite podupit kao kriterij polja kada želite koristiti rezultate podupita da biste ograničili vrijednosti koje polje prikazuje.

Pretpostavimo, primjerice, da želite pregledati popis narudžbi koje su obradili zaposlenici koji nisu prodajni predstavnici . Da biste generirali ovaj popis, morate usporediti ID zaposlenika za svaki redoslijed s popisom ID-ova zaposlenika za zaposlenike koji nisu prodajni predstavnici. Da biste stvorili taj popis i koristili ga kao kriterij polja, koristite podupita, kao što je prikazano u sljedećem postupku:

  1. Otvorite Northwind. accdb i omogućite njezin sadržaj.

  2. Zatvorite obrazac za prijavu.

  3. Na kartici Stvaranje u grupi Ostalo kliknite Dizajn upita.

  4. Na kartici tablice dvokliknite narudžbe i zaposlenici.

  5. U tablici Narudžbe dvokliknite polje ID zaposlenika , polje ID narudžbe i polje Datum narudžbe da biste ih dodali u rešetku dizajna upita. U tablici zaposlenici dvaput kliknite polje naslov posla da biste ga dodali u rešetku dizajna.

  6. Desnom tipkom miša kliknite redak Kriteriji u stupcu ID zaposlenika, a zatim na izborničkom prečacu kliknite Zumiranje .

  7. U okvir Zumiranje upišite ili zalijepite sljedeći izraz:

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

    Ovo je podupit. Odabire sve ID-ove zaposlenika na kojima zaposlenik nema naziv radnog mjesta prodajnog predstavnika i opskrbljuje rezultat postavljenih na glavni upit. Glavni upit provjerava jesu li ID-ovi zaposlenika iz tablice narudžbe u skupu rezultata.

  8. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

    Upit se pokreće, a rezultati upita prikazuju popis narudžbi koje su obradili zaposlenici koji nisu prodajni predstavnici.

Vrh stranice

Česte SQL ključne riječi koje možete koristiti s podupitom

Postoji nekoliko SQL ključnih riječi koje možete koristiti s podupitom:

Napomena: Ovaj popis nije iscrpan. Možete koristiti bilo koju valjanu SQL ključnu riječ u podupitu, osim ključnih riječi definicije podataka.

  • SVE    Upotrijebite sve u uvjetu WHERE da biste dohvatili retke koji zadovoljavaju uvjet u usporedbi sa svakim retkom koji je vratio podupit.

    Pretpostavimo, primjerice, da analizirate podatke učenika na koledžu. Učenici moraju održavati minimum GPA, koji se razlikuje od glavnog do glavnog. Većim i minimalnim GPAs-om pohranjeni su u tablici pod nazivom Majorovi, a relevantne informacije o učenicima pohranjuju se u tablicu koja se zove Student_Records.

    Da bi vam se prikazalo popis vodećih (i njihov minimalni prosjek ocjena) za koje svaki student s tim većim putem premašuje minimalni prosjek standarda, možete koristiti sljedeći upit:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • SVE    Koristite bilo koji u uvjetu WHERE da biste dohvatili retke koji zadovoljavaju uvjet u odnosu na najmanje jedan od redaka koje je vratio podupit.

    Pretpostavimo, primjerice, da analizirate podatke učenika na koledžu. Učenici moraju održavati minimum GPA, koji se razlikuje od glavnog do glavnog. Većim i minimalnim GPAs-om pohranjeni su u tablici pod nazivom Majorovi, a relevantne informacije o učenicima pohranjuju se u tablicu koja se zove Student_Records.

    Da bi vam se prikazalo popis vodećih (i njihov minimalni prosjek ocjena) za koje bilo koji učenik s tim glavnim ne zadovoljava minimum GPA, možete koristiti sljedeći upit:

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

    Napomena: U istu svrhu možete koristiti i ključnu riječ. NEKA ključna riječ je sinonim za bilo koju.

  • EXISTS     Korištenje postoji u uvjetu WHERE radi upućivati na to da se podupita vraća najmanje jedan redak. Možete i prijeci da postoji, da biste naznačili da podupit ne smije vraćati retke.

    Na primjer, sljedeći upit vraća popis proizvoda koji se nalaze u najmanje jednom postojećem redoslijedu:

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

    Korištenje ne postoji, upit vraća popis proizvoda koji se ne nalaze u najmanje jednom postojećem redoslijedu:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Koristite u klauzulu WHERE da biste potvrdili da je vrijednost u trenutnim recima glavnog upita dio skupa koji će podupita vratiti. Možete i pretsuočiti s ne, da biste potvrdili da vrijednost u trenutnim recima glavnog upita nije dio skupa koji će se vratiti.

    Na primjer, sljedeći upit vraća popis narudžbi (s datumima narudžbe) koje su obrađivali zaposlenici koji nisu prodajni predstavnici:

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

    Pomoću programa NOT IN možete napisati isti upit na ovaj način:

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

Vrh stranice

Potrebna vam je dodatna pomoć?

Proširite svoje vještine
Istražite osposobljavanje
Prvi koristite nove značajke
Pridružite se Microsoft Office Insiderima

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?

Hvala vam na povratnim informacijama!

×