Prijavite se pomoću Microsofta
Prijavi se ili izradi račun.
Zdravo,
Odaberite drugi račun.
Imate više računa
Odaberite račun putem kojeg se želite prijaviti.

Ponekad ćete možda htjeti 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 prikazuje ovaj interval, morate usporediti svaki datum narudžbe s drugim datumima narudžbe za taj proizvod. Za usporedbu tih datuma narudžbe potreban je i upit. Taj upit možete ugnježđivati unutar glavnog upita pomoću podupit.

Podupit možete napisati u obliku izraz ili u naredbu Structured Query Language (SQL) u SQL prikaz.

Sadržaj članka

Korištenje rezultata upita kao polja u drugom upitu

Kao pseudonim polja možete koristiti podupit. Podupit koristite kao pseudonim polja kada rezultate podupita želite koristiti kao polje u glavnom upitu.

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

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

Na primjer, povratne informacije o primjeru u kojem želite vidjeti interval između narudžbi za svaki od vaših proizvoda. Da biste odredili taj interval, morate usporediti svaki datum narudžbe s drugim datumima narudžbe za taj proizvod. Pomoću predloška baze podataka Northwind možete stvoriti upit koji prikazuje te informacije.

  1. Na kartici Datoteka kliknite Novo.

  2. U odjeljku Dostupni predlošci kliknite 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 proizvoda rešetke odaberite Uzlazno.

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

  10. U trećem stupcu rešetke desnom tipkom miša kliknite redak Polje , 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])

    Taj je izraz podupit. Podupit za svaki redak odabire zadnji datum narudžbe koji je manji od datuma narudžbe koji je već povezan s retkom. Obratite pozornost na to kako pomoću ključne riječi AS stvoriti pseudonim tablice da biste vrijednosti u podupitu mogli usporediti s vrijednostima u trenutnom retku glavnog upita.

  12. U četvrti stupac rešetke u redak Polje upišite sljedeći izraz:

    Interval: [Order Date]-[Prior Date]

    Ovaj izraz izračunava interval između svakog datuma narudžbe i datuma prethodne narudžbe za taj proizvod, koristeći vrijednost 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, datuma prethodne narudžbe i intervala između datuma narudžbe. Rezultati se najprije sortiraju prema ID-u proizvoda (uzlaznim redoslijedom), a zatim prema datumu narudžbe (silaznim redoslijedom).

    2. Napomena: Budući da je ID proizvoda polje s vrijednostima, Access po zadanom prikazuje vrijednosti pretraživanja (u ovom slučaju naziv proizvoda), a ne stvarne ID-ove proizvoda. Iako se time mijenjaju vrijednosti koje se pojavljuju, redoslijed sortiranja se ne mijenja.

  14. Zatvorite bazu podataka Northwind.

Vrh stranice

Korištenje podupita kao kriterija za polje upita

Kao kriterij polja možete koristiti podupit. Podupit koristite 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 predstavnici prodaje. Da biste generirali taj popis, morate usporediti ID zaposlenika za svaku narudžbu s popisom ID-ova zaposlenika za zaposlenike koji nisu predstavnici prodaje. Da biste stvorili ovaj popis i koristili ga kao kriterij polja, koristite podupit, kao što je prikazano u sljedećem postupku:

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

  2. Zatvorite obrazac za prijavu.

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

  4. Na kartici Tablice dvokliknite Narudžbei 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 dvokliknite polje Naziv radnog mjesta da biste ga dodali u rešetku dizajna.

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

  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 u kojima zaposlenik nema poslovnu titulu prodajnog predstavnika i isporučuje taj rezultat postavljen na glavni upit. Glavni upit zatim 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 predstavnici prodaje.

Vrh stranice

Uobičajene SQL ključne riječi koje možete koristiti s podupitom

S podupitom možete koristiti nekoliko SQL ključnih riječi:

Napomena: Ovaj popis nije konačan. U podupitu možete koristiti bilo koju valjanu SQL ključnu riječ, osim ključnih riječi za definiciju podataka.

  • SVE    Koristite ALL u uvjetu WHERE da biste dohvatili retke koji zadovoljavaju uvjet u usporedbi sa svakim retkom koji vrati podupit.

    Pretpostavimo, primjerice, da analizirate podatke učenika na faksu. Studenti moraju održavati minimalni GPA, koji varira od glavnih do glavnih. Glavni predmeti i njihovi minimalni GPA-i pohranjuju se u tablicu pod nazivom Glavni predmeti, a relevantni se podaci o učenicima pohranjuju u tablicu pod nazivom Student_Records.

    Da biste vidjeli popis glavnih (i minimalnih GPA- ova) za koje svaki učenik s tim glavnim predmetom premašuje minimalni GPA, 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]);
  • BILO    Koristite ANY u uvjetu WHERE da biste dohvatili retke koji zadovoljavaju uvjet u usporedbi s barem jednim retkom koji vraća podupit.

    Pretpostavimo, primjerice, da analizirate podatke učenika na faksu. Studenti moraju održavati minimalni GPA, koji varira od glavnih do glavnih. Glavni predmeti i njihovi minimalni GPA-i pohranjuju se u tablicu pod nazivom Glavni predmeti, a relevantni se podaci o učenicima pohranjuju u tablicu pod nazivom Student_Records.

    Da biste vidjeli popis glavnih studija (i njihove minimalne GPA-ove) za koje svaki učenik s tim glavnim predmetom ne zadovoljava minimalni 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: Ključnu riječ SOME možete koristiti i u istu svrhu. ključna riječ SOME sinonim je za ANY.

  • EXISTS     Upotrijebite EXISTS u uvjetu WHERE da biste naznačili da podupit mora vratiti najmanje jedan redak. Možete i unaprijed postaviti FUNKCIJU EXISTS s NOT da biste naznačili da podupit ne bi trebao vraćati retke.

    Sljedeći upit, primjerice, vraća popis proizvoda pronađenih u barem jednom postojećem redoslijedu:

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

    Ako ne koristite FUNKCIJU NOT EXISTS, upit vraća popis proizvoda koji nisu pronađeni barem jednim postojećim redoslijedom:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Pomoću funkcije IN u uvjetu WHERE provjerite je li vrijednost u trenutnom retku glavnog upita dio skupa koji vraća podupit. In možete dodati i not da biste provjerili da vrijednost u trenutnom retku glavnog upita nije dio skupa koji vraća podupit.

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

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

    Pomoću funkcije NOT IN isti upit možete napisati 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ć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?
Ako pritisnete Pošalji, vaše će se povratne informacije iskoristiti za poboljšanje Microsoftovih proizvoda i usluga. Vaš će IT administrator moći prikupiti te podatke. Izjava o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

×