Predikati ALL, DISTINCT, DISTINCTROW, TOP

Navodi zapise izabrane pomoću SQL upita.

Sintaksa

SELECT [ALL | POSEBNO | DISTINCTROW | [TOP n [PERCENT]]]FROM tabela

Izraz SELECT koji sadrži ove predikate ima sledeće delove:

Deo

Opis

ALL

Pretpostavlja se da ako ne uključite jedan od predikata. Microsoft Access mašina baze podataka bira sve zapise koji ispunjavaju uslove u SQL izrazu. Sledeća dva primera su jednaka i vraćaju sve zapise iz tabele "Zaposleni":

SELECT ALL *FROM EmployeesORDER BY EmployeeID;
SELECT *FROM EmployeesORDER BY EmployeeID;

DISTINCT

Izostavi zapise koji sadrže duplirane podatke u izabranim poljima. Da bi se uključile u rezultate upita, vrednosti za svako polje navedeno u izrazu SELECT moraju biti jedinstvene. Na primer, nekoliko zaposlenih navedenih u tabeli "Zaposleni" može da ima isto prezime. Ako dva zapisa sadrže Simić u polju "Prezime", sledeći SQL izraz vraća samo jedan zapis koji sadrži Simić:

SELECT DISTINCT LastNameFROM Employees;

Ako izostavite DISTINCT, ovaj upit vraća oba Smit zapisa.

Ako odredba SELECT sadrži više od jednog polja, kombinacija vrednosti iz svih polja mora da bude jedinstvena da bi dati zapis bio uključen u rezultate.

Izlaz upita koji koristi DISTINCT ne može da se ažurira i ne odražava naredne promene drugih korisnika.

DISTINCTROW

Izostavi podatke na osnovu celih dupliranih zapisa, ne samo dupliranih polja. Na primer, možete da kreirate upit koji spaja tabele "Klijenti" i "Porudžbine" u polju "ID kupca". Tabela "Klijenti" ne sadrži duplirana polja "ID kupca", ali tabela "Porudžbine" sadrži zato što svaki klijent može da ima više porudžbina. Sledeći SQL izraz pokazuje kako možete da koristite DISTINCTROW da biste napravili listu preduzeća koja imaju bar jednu porudžbinu, ali bez detalja o tim porudžbinama:

SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER BY CompanyName;

Ako izostavite DISTINCTROW, ovaj upit daje više redova za svako preduzeće koje ima više porudžbina.

DISTINCTROW ima efekat samo kada izaberete polja iz nekih, ali ne svih tabela koje se koriste u upitu. DISTINCTROW se zanemaruju ako upit sadrži samo jednu tabelu ili ako izlazna polja iz svih tabela.

TOP n [PERCENT]

Vraća određeni broj zapisa koji se nalaze na vrhu ili dnu opsega koji navodi odredba ORDER BY. Recimo da želite imena 25 najboljih studenata iz razreda 1994:

SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage DESC;

Ako ne uključite odredbu ORDER BY, upit će vratiti proizvoljni skup od 25 zapisa iz tabele Studenti koji zadovoljavaju odredbu WHERE.

Predikat TOP ne bira između jednakih vrednosti. U prethodnom primeru, ako su prosečne vrednosti 25. i 26. po veličini razreda iste, upit će vratiti 26 zapisa.

Rezervisanu reč PERCENT možete da koristite i da biste vratili određeni procenat zapisa koji se nalaze na vrhu ili dnu opsega koji navodi odredba ORDER BY. Pretpostavimo da umesto 25 najboljih studenata želite poslednjih 10 procenata razreda:

SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage ASC;

Predikat ASC navodi povraćaj najniže vrednosti. Vrednost koja sledi TOP mora biti nepotpisani ceo broj.

TOP ne utiče na to da li upit može da se ažurira ili ne.

tabela

Ime tabele iz koje se preuzimaju zapisi.

Da li vam je potrebna dodatna pomoć?

Želite još opcija?

Istražite pogodnosti pretplate, pregledajte kurseve za obuku, saznajte kako da obezbedite uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na pitanja, dajete povratne informacije i čujete mišljenje od stručnjaka sa bogatim znanjem.