Ugnežđavanje upita u drugi upit ili u izraz pomoću podupita

Važno : Ovaj članak je mašinski prevesti potražite u članku Odricanje odgovornosti. O referencu pronaći verzija ovaj članak ovde na engleskom jeziku.

Rezultate upita ponekad možete koristiti kao polje u drugom upitu ili kao kriterijum za polje upita. Na primer, pretpostavimo da želite da vidite interval između porudžbina za svaki od svojih proizvoda. Da biste kreirali upit koji prikazuje ovaj interval, treba da uporedite svaki datum porudžbine sa drugim datumima porudžbine za taj proizvod. Poređenje ovih datuma porudžbine takođe zahteva upit. Ovaj upit možete ugnezditi u glavni upit pomoću podupit.

Podupit možete upisati u izraz ili u Structured Query Language (SQL) izjavu u prikaz „SQL“.

Napomena : Ovaj članak se ne odnosi na Access aplikacije – novu vrstu bazu podataka za dizajniranje pomoću programa Access i objavljivanje na mreži. Pogledajte članak Kreiranje Access aplikacije za više informacija.

U ovom članku

Korišćenje rezultata upita kao polja u drugom upitu

Korišćenje podupita kao kriterijuma za polje upita

Uobičajene SQL ključne reči koje se mogu koristiti sa podupitom

Korišćenje rezultata upita kao polja u drugom upitu

Podupit možete da koristite kao pseudonim polja. Korišćenje podupita kao pseudonim polja kada želite da koristite podupita rezultate kao polja u glavnom upita.

Napomena : Podupit koji koristite kao pseudonim polja ne može da vrati više polja.

Pseudonim polja podupita možete koristiti za prikaz vrednosti koje zavise od drugih vrednosti u trenutnom redu, što nije moguće bez korišćenja podupita.

Recimo, vratimo se na primer gde želite da vidite interval između porudžbina za svaki od svojih proizvoda. Da biste odredili ovaj interval, treba da uporedite svaki datum porudžbine sa drugim datumima porudžbine za taj proizvod. Upit koji prikazuje ove informacije možete kreirati pomoću predloška baze podataka Northwind.

Prikaz načina podešavanja baze podataka Northwind

  1. Na kartici Datoteka kliknite na dugme Novo.

  2. U okviru Dostupni predlošci izaberite stavku Uzorci predložaka.

  3. Izaberite stavku Northwind i kliknite na dugme Kreiraj.

  4. Sledite pravce na stranici Northwind Traders (na kartici objekta Polazni ekran) da biste otvorili bazu podataka, a zatim zatvorite prozor „Dijalog za prijavljivanje“.

  1. Na kartici Kreiranje, u grupi Upiti izaberite stavku Dizajn upita.

  2. U dijalogu Prikazivanje tabele izaberite karticu Upiti, a zatim kliknite dvaput na stavku Porudžbine proizvoda.

  3. Zatvorite dijalog Prikazivanje tabele.

  4. Kliknite dvaput na polja ID proizvoda i Datum porudžbine da biste ih dodali u koordinatnu mrežu dizajna upita.

  5. U redu Sortiranje kolone ID proizvoda koordinatne mreže izaberite stavku Rastući redosled.

  6. U redu Sortiranje kolone Datum porudžbine koordinatne mreže izaberite stavku Opadajući redosled.

  7. U trećoj koloni koordinatne mreže kliknite desnim tasterom miša na red Polje, a zatim u priručnom meniju izaberite stavku Zumiranje.

  8. U dijalogu Zumiranje otkucajte ili nalepite sledeć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])

Ova izraz predstavlja podupit. Za svaki red podupit bira najnoviji datum porudžbine koji je noviji od datuma porudžbine koji je već povezan sa redom. Obratite pažnju na to kako ključnu reč AS koristite za kreiranje pseudonima tabele kako biste mogli da uporedite vrednosti u podupitu sa vrednostima u trenutnom redu glavnog upita.

  1. U četvrtoj koloni koordinatne mreže, u redu Polje otkucajte sledeći izraz:

    Interval: [Order Date]-[Prior Date]

Ovaj izraz izračunava interval između svakog datuma porudžbine i prethodnog datuma porudžbine za taj proizvod pomoću vrednosti za prethodni datum koje smo definisali pomoću podupita.

  1. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

    1. Upit se pokreće i prikazuje listu imena proizvoda, datuma porudžbine, prethodnih datuma porudžbine i intervala između datuma porudžbine. Rezultati su prvo sortirani po ID-u proizvoda (rastućim redosledom), a zatim po datumu porudžbine (opadajućim redosledom).

    2. Napomena : Pošto je „ID proizvoda“ polje za pronalaženje, Access podrazumevano prikazuje vrednosti za pronalaženje (u ovom slučaju, ime proizvoda), a ne stvarne ID-ove proizvoda. Iako ovo menja vrednosti koje se pojavljuju, redosled sortiranja se ne menja.

  2. Zatvorite bazu podataka Northwind.

Vrh stranice

Korišćenje podupita kao kriterijuma za polje upita

Podupit možete da koristite kao kriterijum za polje. Korišćenje podupita kao kriterijuma polja kada želite da koristite rezultatima podupita da biste ograničili vrednosti koje polje prikazuje.

Na primer, pretpostavimo da želite da pregledate listu porudžbina koje su obradili zaposleni koji nisu predstavnici prodaje. Da biste generisali ovu listu, treba da uporedite ID zaposlenog za svaku porudžbinu sa listom ID-ova zaposlenih za zaposlene koji nisu predstavnici prodaje. Da biste kreirali ovu listu i koristili je kao kriterijum polja, koristite podupit kao što je prikazano u sledećoj proceduri:

  1. Otvorite Northwind bazu podataka i omogućite njen sadržaj.

  2. Zatvorite obrazac za prijavljivanje.

  3. Na kartici Kreiranje, u grupi Ostalo kliknite na dugme Dizajn upita.

  4. U dijalogu Prikazivanje tabele, na kartici Tabele kliknite dvaput na stavke Porudžbine i Zaposleni.

  5. Zatvorite dijalog Prikazivanje tabele.

  6. U tabeli „Porudžbine“ kliknite dvaput na polja ID zaposlenog, ID porudžbine i Datum porudžbine da biste ih dodali u koordinatnu mrežu dizajna upita. U tabeli „Zaposleni“ kliknite dvaput na polje Radno mesto da biste ga dodali u koordinatnu mrežu dizajna.

  7. Kliknite desnim tasterom miša na red Kriterijumi kolone „ID zaposlenog“, a zatim u priručnom meniju izaberite stavku Zumiranje.

  8. U polju Zumiranje otkucajte ili nalepite sledeći izraz:

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

    Ovo je podupit. On bira sve ID-ove zaposlenih gde zaposleni nemaju radno mesto predstavnika prodaje i obezbeđuje taj skup rezultata glavnom upitu. Glavni upit zatim proverava da li se ID-ovi zaposlenih iz tabele „Porudžbine“ nalaze u skupu rezultata.

  9. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

    Upit se pokreće i rezultati upita prikazuju listu porudžbina koje su obradili zaposleni koji nisu predstavnici prodaje.

Vrh stranice

Uobičajene SQL ključne reči koje se mogu koristiti sa podupitom

Postoji nekoliko SQL ključnih reči koje možete koristiti sa podupitom:

Napomena : Ova lista nije detaljna. U podupitu možete koristiti svaku važeću SQL ključnu reč osim ključnih reči za definisanje podataka.

  • ALL    Koristite ALL u odredbi WHERE da biste preuzeli redove koji zadovoljavaju uslov kada se uporede sa svakim redom kojeg je vratio podupit.

    Na primer, pretpostavimo da analizirate podatke o studentima na fakultetu. Studenti moraju da održavaju minimalnu prosečnu ocenu, koja se razlikuje od glavnog predmeta do glavnog predmeta. Glavni predmeti i njihove minimalne ocene uskladišteni su u tabeli „Glavni predmeti“, a važne informacije o studentima uskladištene su u tabeli „Zapisi_o_studentima“.

    Da biste videli listu glavnih predmeta (i njihove minimalne prosečne ocene) za koje svaki student sa tim glavnim predmetom premašuje minimalnu prosečnu ocenu, možete koristiti sledeći upit:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • ANY    Koristite ANY u odredbi WHERE da biste preuzeli redove koji zadovoljavaju uslov kada se uporede sa makar jednim od redova koje je vratio podupit.

    Na primer, pretpostavimo da analizirate podatke o studentima na fakultetu. Studenti moraju da održavaju minimalnu prosečnu ocenu, koja se razlikuje od glavnog predmeta do glavnog predmeta. Glavni predmeti i njihove minimalne ocene uskladišteni su u tabeli „Glavni predmeti“, a važne informacije o studentima uskladištene su u tabeli „Zapisi_o_studentima“.

    Da biste videli listu glavnih predmeta (i njihove minimalne prosečne ocene) za koje neki student sa tim glavnim predmetom ne ispunjava minimalnu prosečnu ocenu, možete koristiti sledeć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 reč SOME takođe možete koristiti za istu svrhu; ključna reč SOME je sinonim ključne reči ANY.

  • EXISTS    Koristite EXISTS u odredbi WHERE da biste ukazali na to da podupit treba da vrati makar jedan red. Ispred ključne reči EXISTS možete staviti i ključnu reč NOT da biste ukazali na to da podupit ne treba da vrati nijedan red.

    Na primer, sledeći upit vraća listu proizvoda koji su pronađeni makar u jednoj postojećoj porudžbini:

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

    Upotrebom ključnih reči NOT EXISTS upit vraća listu proizvoda koji nisu pronađeni ni u jednoj postojećoj porudžbini:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Koristite IN u odredbi WHERE da biste potvrdili da je vrednost u trenutnom redu glavnog upita deo skupa koji podupit vraća. Ispred ključne reči IN možete staviti ključnu reč NOT da biste potvrdili da vrednost u trenutnom redu glavnog upita nije deo skupa koji podupit vraća.

    Na primer, sledeći upit vraća listu porudžbina (sa datumima porudžbine) koje su obradili zaposleni koji nisu predstavnici prodaje:

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

    Korišćenjem ključnih reči 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

Napomena : Odricanje odgovornosti mašinskog prevođenja: ovaj članak je preveden sistem računara bez ljudski interventne. Microsoft nudi ove mašinskog prevoda da pomogne koja nije na engleskom govornih korisnicima da uživate u sadržaju za Microsoft proizvode, usluge i tehnologijama. U članku bio mašinskog prevesti, mogu da sadrže greške u rečnik, sintaksa ili gramatiku.

Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Office Insider korisnicima

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Zvuči da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×