Predikati ALL, DISTINCT, DISTINCTROW, TOP

Određuje zapise odabrane uz SQL upite.

Sintaksa

SELECT [SVE | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]FROM tablica

Naredba SELECT koja sadrži te predikate sastoji se od sljedećih dijelova:

Dio

Opis

ALL

Pretpostavlja se ako ne uvrstite jedan od predikata. Modul baze podataka programa Microsoft Access odabire sve zapise koji zadovoljavaju uvjete u SQL naredbi. Sljedeća su dva primjera ekvivalentna i vraćaju sve zapise iz tablice Zaposlenici:

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

DISTINCT

Izograničen je zapis koji sadrži duplicirane podatke u odabranim poljima. Da bi se uvrstili u rezultate upita, vrijednosti za svako polje navedeno u naredbi SELECT moraju biti jedinstvene. Na primjer, nekoliko zaposlenika navedenih u tablici Zaposlenici može imati isto prezime. Ako dva zapisa sadrže Smitha u polju Prezime, sljedeća SQL naredba vraća samo jedan zapis koji sadrži Smitha:

SELECT DISTINCT LastNameFROM Employees;

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

Ako uvjet SELECT sadrži više polja, kombinacija vrijednosti iz svih polja mora biti jedinstvena da bi se navedeni zapis uvrstili u rezultate.

Izlaz upita koji koristi DISTINCT nije moguće ažurirati i ne odražava daljnje promjene koje su unijeli drugi korisnici.

DISTINCTROW

Izograničen je broj podataka na temelju cijelih dupliciranih zapisa, a ne samo na dupliciranim poljima. Možete, primjerice, stvoriti upit koji spaja tablice Kupci i Narudžbe u polju IDKupca. Tablica Kupci ne sadrži dvostruka polja IDKupca, ali tablica Narudžbe funkcionira jer svaki klijent može imati mnogo narudžbi. Sljedeća SQL naredba pokazuje kako koristiti DISTINCTROW za stvaranje popisa tvrtki koje imaju barem jednu narudžbu, ali bez pojedinosti o tim narudžbama:

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

Ako izostavite DISTINCTROW, ovaj upit stvara više redaka za svaku tvrtku koja ima više od jednog redoslijeda.

DISTINCTROW ima učinak samo kada odaberete polja iz nekih, ali ne i svih tablica koje se koriste u upitu. DISTINCTROW se zanemaruje ako upit sadrži samo jednu tablicu ili ako izlazna polja iz svih tablica.

TOP n [PERCENT]

Vraća određeni broj zapisa koji se nalaze na vrhu ili dnu raspona navedenog uvjetom ORDER BY. Pretpostavimo da želite imena 25 najboljih učenika iz razreda 1994:

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

Ako ne uvrstite uvjet ORDER BY, upit će vratiti proizvoljni skup od 25 zapisa iz tablice Učenici koji zadovoljavaju uvjet WHERE.

Predikat TOP ne odabire jednake vrijednosti. U prethodnom primjeru, ako su dvadeset peti i dvadeset šesti najviši prosjek ocjena isti, upit će vratiti 26 zapisa.

Rezerviranu riječ PERCENT možete koristiti i za vraćanje određenog postotka zapisa koji se nalaze na vrhu ili dnu raspona navedenog uvjetom ORDER BY. Pretpostavimo da umjesto 25 najboljih učenika želite 10 posto od razreda:

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

Predikat ASC određuje povrat donjih vrijednosti. Vrijednost koja slijedi kao TOP mora biti nepotpisan cijeli broj.

TOP ne utječe na to može li se upit ažurirati.

tablica

Naziv tablice iz koje se zapisi učitavaju.

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.