WEBnSTUDY.com
MySQL

SQL filtriranje podataka (WHERE)

Ako želimo da prikažemo samo podatke koji zadovoljavaju određene kriterijume, koristićemo odrednicu WHERE. Posle ove odrednice zadajemo uslov koji se odnosi na polja (kolone) rezultata. Biće prikazani samo oni redovi koji zadovoljavaju taj uslov. Naravno, u istom SELECT iskazu možemo koristiti i odrednicu ORDER BY.

SELECT [lista izraza] FROM [tabela] WHERE [uslov] SELECT [lista izraza] FROM [tabela] WHERE [uslov] ORDER BY [lista select polja]

Ovi uslovi mogu biti prosta upoređivanja koja dobijamo korišćenjem relacionih operatora.

= jednako
<> različito
< manje
> veće
<= manje ili jednako
>= veće ili jednako

Kada radimo sa string (tekstualnim) podacima, možemo koristiti i operator LIKE, za kreiranje šablona za upoređivanje.

[izraz] LIKE [šablon] [izraz] NOT LIKE [šablon]

Pri tom, se u šablonu koriste džoker znakovi. Ovi znakovi zamenjuju znakove teksta.

_ bilo koji znak
% bilo koji broj bilo kojih znakova (čak i nula znakova)
ime LIKE 'a_a' --> uklapa se sa 'ana' i 'aca' ali ne i 'alisa' ime LIKE 'a%a' --> uklapa se i 'ana' i 'aca' i 'alisa', ali i 'aa'

Kompleksni uslovi

Uslov kojim određujemo koji redovi tabele će biti prikazani može biti i prilično kompleksan. Ovakve uslove dobijamo povezivanjem više prostih uslova. Povezivanje se vrši korišćenjem logičkih operacija AND i OR. Na uslove je moguće primeniti i negaciju NOT.

Kada povezujemo dva uslova sa AND to praktično znači da oba moraju da budu zadovoljena da bi određeni red podataka "ušao" u rezultat. Ako dva uslova povežemo sa OR, to znači da je dovoljno da samo jedan od njih bude zadovoljen.

Primer

Za primer ćemo iskoristiti sličnu tabelu kao u prethodnom tekstu.

sifra naslov stranice zanr pisac
0001 Isijavanje 390 HOR P02
0002 Boja magije 270 FAN P09
0005 Čekajući Godoa 90 DRA P11
0006 To 1070 HOR P02
0007 Veštice na putu 370 FAN P09
000A Mračna kula 200 FAN P02
000B Prokleta avlija 150 IST P01

SQL iskaz koji smo koristili za povlačenje naslova i brojeva strana, možemo ograničiti na samo određene knjige korišćenjem odrednice WHERE. U ovom slučaju ćemo potražiti one knjige koje spadaju u žanr fantastike ("FAN").


  SELECT naslov, stranice
  FROM knjige
  WHERE zanr='FAN'
		
naslov stranice
Boja magije 270
Veštice na putu 370
Mračna kula 200

Hajde da sada napravimo takav isti upit, ali da još sortiramo podatke prema broju strana, slično kao prošli put, samo da sada iskombinujemo WHERE i ORDER BY.


  SELECT naslov, stranice
  FROM knjige
  WHERE zanr='FAN'
  ORDER BY stranice
		
naslov stranice
Mračna kula 200
Boja magije 270
Veštice na putu 370

Za poslednji primer ćemo pokušati da iskombinujemo više uslova - tražimo knjige koje imaju više od 100 strana i naslov im se završava slovom "a".


  SELECT naslov, stranice, zanr
  FROM knjige
  WHERE (stranice>100) AND (naslov LIKE '%a')
		
naslov stranice zanr
Mračna kula 200 FAN
Prokleta avlija 150 IST

Iako npr. "Isijavanje" ima 390 strana, nije prikazano jer se naslov ne završava slovom "a". Sa druge strane, iako se naslov "Čekajući Godoa" završava na "a", nije prikazan zato što knjiga ima samo 90 strana.

Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies) radi vođenja interne statistike u cilju unapređenja korisničkog iskustva. Tako prikupljeni podaci su anonimni i nedostupni trećim licima. Vaša privatnost nije ugrožena ni na koji način.