Ugnježđivanje upita u drugom upitu ili izrazu pomoću podupita

Važno :  Ovaj je članak strojno preveden. Pogledajteizjavu o odricanju od odgovornosti. Verziju ovog članka na engleskom potražite ovdje.

Možda ponekad poželite koristiti rezultate upita kao polje u drugom upitu ili kao kriterij za polje upita. Na primjer, pretpostavimo da želite vidjeti interval između narudžbi za svaki proizvod. Da biste stvorili upit koji prikazuje taj interval, morate usporediti datum svake narudžbe s drugim datumima narudžbi za taj proizvod. Za uspoređivanje tih datuma narudžbi potreban je upit. Taj upit možete ugnijezditi unutar glavnog upita pomoću podupit.

Podupit možete napisati u izraz ili u SQL naredbi u SQL prikaz.

Sadržaj članka

Korištenje rezultata upita kao polja u drugom upitu

Korištenje podupita kao kriterija za polje upita

Najčešće SQL ključne riječi koje možete koristiti s podupitom

Korištenje rezultata upita kao polja u drugom upitu

Podupit možete koristiti kao pseudonim polja. 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 radi prikaza vrijednosti koje ovise o drugim vrijednostima u trenutnom retku, što nije moguće bez korištenja podupita. Ako, na primjer, Javite nam vratite se u primjeru mjesto na koje želite da biste vidjeli interval između narudžbe za svaki od vaših proizvoda. Da biste utvrdili interval, morate usporediti svakog datuma narudžbe da biste druge datumi narudžbe za taj proizvod. Možete stvoriti upita koji prikazuje informacije pomoću predloška Northwind 2007.

Pokaži mi kako postaviti Northwind 2007

  1. Kliknite gumb Microsoft Office Slika gumba Office , a zatim Novo.

  2. U lijevom oknu u odjeljku Kategorije predložakakliknite Lokalni predlošci.

  3. U odjeljku Lokalni predlošcikliknite Northwind 2007, a zatim kliknite 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.

  1. Na kartici Stvaranje u grupi Ostalo pritisnite Dizajn upita.

  2. U dijaloškom okviru Prikaz tablice kliknite karticu Upiti, a zatim dvokliknite Narudžbe proizvoda.

  3. Zatvorite dijaloški okvir Prikaz tablice.

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

  5. U retku Sortiranje stupca rešetke ID proizvoda odaberite Uzlazno.

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

  7. U trećem stupcu rešetke desnom tipkom miša kliknite redak Polje, a zatim na izborniku prečacu kliknite Zumiraj.

  8. U dijaloški okvir 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 izraz je podupit. Za svaki redak upit odabire najnoviji datum narudžbe koji je stariji od datuma narudžbe koji je već povezana s retkom. Obratite pažnju na to kako koristite ključnu riječ AS radi stvaranja pseudonima tablice, tako da možete usporediti vrijednosti u podupitu s vrijednostima u trenutnom retku glavnog upita.

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

Interval: [Order Date]-[Prior Date]

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

  1. Na kartici Dizajn u grupi Rezultati pritisnite Izvedi.

    Upit se pokreće i prikazuje popis naziva proizvoda, datume narudžbi, prethodne datume narudžbi te interval između datuma narudžbi. Rezultati se sortiraju najprije po ID-u proizvoda (uzlaznim redoslijedom), a zatim po datumu narudžbe (silaznim redoslijedom).

    Napomena : Budući da je ID proizvoda polje s vrijednostima, Access po zadanom prikazuje dohvaćene vrijednosti (u ovom slučaju, naziv proizvoda) umjesto pravog ID-a proizvoda. Iako to mijenja prikazane vrijednosti, ne mijenja redoslijed sortiranja.

  2. Zatvorite bazu podataka tvrtke Northwind.

Vrh stranice

Korištenje podupita kao kriterija za polje upita

Podupit možete koristiti kao kriterij polja. Podupit koristite kao kriterij polja kada rezultate podupita želite koristiti radi ograničenja vrijednosti koje polje prikazuje.

Na primjer, pretpostavimo da želite pregledati popis narudžbi koje su obradili zaposlenici koji nisu prodajni predstavnici. Da biste generirali taj popis, morate usporediti ID zaposlenika za svaku narudžbu s popisom ID-ova zaposlenika koji nisu prodajni predstavnici. Da biste stvorili taj popis i koristili ga kao kriterij polja, koristite podupit, kao što je prikazano u sljedećem postupku:

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

  2. Zatvorite obrazac za prijavu.

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

  4. U dijaloškom okviru Prikaz tablice na kartici Tablice dvokliknite Narudžbe i Zaposlenici.

  5. Zatvorite dijaloški okvir Prikaz tablice.

  6. 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.

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

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

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

    To je podupit. Odabire sve ID-ove zaposlenika čiji naziv radnog mjesta nije Prodajni predstavnik i taj skup rezultata šalje glavnom upitu. Glavni upit zatim provjerava nalaze li se ID-ovi zaposlenika iz tablice Narudžbe u skupu rezultata.

  9. Na kartici Dizajn u grupi Rezultati pritisnite Izvedi.

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

Vrh stranice

Najčešće SQL ključne riječi koje možete koristiti s podupitom

Nekoliko je SQL ključnih riječi koje možete koristiti u podupitu:

Napomena : Ovaj popis nije opsežan. Bilo koju SQL ključnu riječ možete koristiti kao podupit, osim ključnih riječi definicije podataka.

  • ALL    Koristite ALL u uvjetu WHERE radi dohvaćanja redaka koji ispunjavaju uvjet pri usporedbi sa svakim retkom koji je vratio podupit.

    Na primjer, pretpostavimo da analizirate podatke o studentima na fakultetu. Studenti moraju održavati minimalni prosjek ocjena, koji se razlikuje od smjera do smjera. Smjerovi i njihov minimalni prosjek ocjena pohranjeni su u tablici Smjerovi, a relevantni podaci o studentima pohranjeni su u tablici Zapisi_o_studentima.

    Da biste vidjeli popis smjerova (i njihov minimalni prosjek ocjena) za koje svaki student s tog smjera premašuje minimalni prosjek, koristite sljedeći upit:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • ANY    ANY u uvjetu WHERE koristite radi dohvaćanja stupaca koji ispunjavaju uvjet pri usporedbi s barem jednim retkom koji je vratio podupit.

    Na primjer, pretpostavimo da analizirate podatke o studentima na fakultetu. Studenti moraju održavati minimalni prosjek ocjena, koji se razlikuje od smjera do smjera. Smjerovi i njihov minimalni prosjek ocjena pohranjeni su u tablici Smjerovi, a relevantni podaci o studentima pohranjeni su u tablici Zapisi_o_studentima.

    Da biste vidjeli popis smjerova (i njihov minimalni prosjek ocjena) za koje barem jedan student s tog smjera nije dostigao minimalni prosjek, koristite 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 u istu svrhu; ključna riječ SOME sinonim je za ANY.

  • EXISTS    EXISTS u uvjetu WHERE koristite da biste naznačili da podupit mora vratiti barem jedan redak. Ispred EXISTS možete staviti NOT da biste naznačili da podupit ne smije vratiti nijedan redak.

    Na primjer, sljedeći upit vraća popis proizvoda koji su pronađeni u barem jednoj postojećoj narudžbi.

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

    Pomoću ključnih riječi NOT EXISTS upit vraća popis proizvoda koji nisu pronađeni ni u jednoj postojećoj narudžbi:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • cm    IN koristite u uvjetu WHERE da biste provjerili je li vrijednost u trenutnom retku glavnog upita dio skupa koji je vratio podupit. Ispred NOT možete staviti IN da biste potvrdili da vrijednost trenutnog retka glavnog upita nije dio skupa koji je vratio podupit.

    Na primjer, sljedeći upit vraća popis narudžbi (s datumima narudžbi) koje su obradili 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 ključnih riječi NOT IN možete isti upit 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

Napomena : Izjava o odricanju od odgovornosti za strojni prijevod: ovaj je članak preveo računalni sustav bez ljudske intervencije. Microsoft nudi strojne prijevode da bi korisnicima koji ne razumiju engleski omogućio čitanje sadržaja o Microsoftovim proizvodima, uslugama i tehnologijama. Budući da je preveden strojno, članak možda sadrži pogreške u vokabularu, sintaksi ili gramatici.

Proširite svoje vještine
Istražite osposobljavanje

Jesu li vam ove informacije bile korisne?

Hvala vam na povratnim informacijama!

Hvala vam na povratnim informacijama! Čini se da bi vam pomoglo kad bismo vas povezali s nekim od naših agenata podrške za Office.

×