1 / 36

SQL: Upiti nad jednom tabelom

SQL: Upiti nad jednom tabelom. Redni upiti nad jednom tabelom Kod svakog upita navodimo koje podatke tražimo kao rezultat iz kojih tabela tražimo podatke koje uslove treba da zadovolje podaci da bi bili uključeni u rezultat U kom redosledu želimo prikaz rezultata . Primer:

sora
Download Presentation

SQL: Upiti nad jednom tabelom

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL: Upiti nad jednom tabelom

  2. Redni upiti nad jednom tabelom • Kod svakog upita navodimo • koje podatke tražimo kao rezultat • iz kojih tabela tražimo podatke • koje uslove treba da zadovolje podaci da bi bili uključeni u rezultat • U kom redosledu želimo prikaz rezultata • Primer: SELECT * FROM Oblast • Napravi upit koji prikazuje šifre naslova koje su pozajmljivane SELECT SifN FROM Pozajmica

  3. Napravi upit koji u koloni Sifra_Naslova prikazuje šifre naslova koje su pozajmljivane, pri čemu se šifre naslova u rezultatu ne ponavljaju, i rezultat je uređen opadajuće po šifri naslova SELECT DISTINCT SifN As Sifra_Naslova FROM Pozajmica ORDER BY SifN DESC • Napravi upit koji za autora sa šifrom DM0 prikazuje: u koloni SifraNasl šifre naslova čiji je to autor, u koloni KojiPoRedu koji je po redu autor. Šifre naslova ne treba da se ponavljaju, a podaci su uređeni rastuće po tome koji je autor po redu SELECT DISTINCT SifN As SifraNasl, Koji As KojiPoRedu FROM Je_Autor WHERE SifA='DM0' ORDER BY SifN

  4. Redni upiti nad jednom tabelom sa svodnim rezultatom

  5. Napravi upit koji prikazuje broj članova biblioteke SELECT COUNT (*) FROM Clan • Napravi upit koji u koloni PozamljivaloNjih prikazuje broj članova biblioteke koji su pozajmljivali knjige SELECT COUNT (DISTINCT SifC) As PozajmljivaloNjih FROM Pozajmica • Napravi upit koji prikazuje u koloni UkupnoDana koliko su ukupno trajale sve pozajmice SELECT SUM (Dana) As UkupnoDana FROM Pozajmica

  6. Napravi upit koji prikazuje u koloni MinDana minimalno trajanje pozajmice, u koloni MaxDana maksimalno trajanje pozajmice SELECT MIN(Dana) As MinDana, MAX(Dana) As MaxDana FROM Pozajmica • Napravi upit koji za člana sa šifrom JJ1 prikazuje u koloni JJ1ProsekDana prosečno trajanje pozajmice SELECT AVG(Dana) As JJ1ProsekDana FROM Pozajmica WHERE SifC= 'JJ1' • Napravi upit koji za autora sa šifrom ZP0 prikazuje u koloni BrojNasl koliko je naslova napisao SELECT COUNT (*) As ZP0BrojNasl FROM Je_Autor WHERE SifA= 'ZP0'

  7. Napravi upit koji prikazuje koliko ima primeraka naslova sa šifrom naslova PJC0 SELECT COUNT(*) FROM Knjiga WHERE SifN= 'PJC0' • Napravi upit koji prikazuje koliko puta se autor sa šifrom AP0 pojavljuje kao prvi autor SELECT COUNT (*) FROM Je_Autor WHERE SifA= 'AP0' AND Koji=1

  8. Svodni upiti nad jednom tabelom • Napravi upit koji prikazuje u koloni SifraClana šifre članova, u koloni UkupnoDana za svakog člana ukupno trajanje pozajmice SELECT SifC As SifraClana, SUM(Dana) As UkupnoDana FROM Pozajmica GROUP BY SifC

  9. Napravi upit koji prikazuje u koloni SifraNasl šifre naslova, u koloni BrojKnjiga broj knjiga sa datim naslovom, sortirano opadajuće po koloni BrojKnjiga SELECT SifN AS SifraNasl, COUNT(*) AS BrojKnjiga FROM Knjiga GROUP BY SifN ORDER BY BrojKnjiga DESC • Napravi upit koji prikazuje u koloni SifraNaslova šifre naslova, a u koloni BrojČlanova koliko članova je rezervisalo dati naslov SELECT SifN AS SifraNasl, COUNT(*) AS BrojČlanova FROM Rezervacija GROUP BY SifN

  10. Napravi upit koji prikazuje u koloni SifraClana šifre članova, u koloni ProsečnoDana za svakog člana koliko prosečno dana zadržava knjigu, sortirano rastuće po koloni ProsečnoDana SELECT SifC AS SifraClana, AVG(Dana) AS ProsecnoDana FROM Pozajmica GROUP BY SifC ORDER BY ProsecnoDana • Napravi upit koji prikazuje u koloni Sifra_naslova šifre naslova, u koloni Broj_autora koliko autora ima neki naslov SELECT SifN AS Sifra_naslova, COUNT(*) AS BrojAutora FROM Je_Autor GROUP BY SifN

  11. Napravi upit koji prikazuje u koloni SifraClana šifre članova koje počinju slovom J, u koloni UkupnoDana za svakog takvog člana ukupno trajanje pozajmice, sortirano rastuće po šifri člana SELECT SifC As SifraClana, SUM(Dana) As UkupnoDana FROM Pozajmica WHERE SifC LIKE ‘J%’ GROUP BY SifC ORDER BY SifraClana ZAKLJUČAK: u WHERE opciji se navodi uslov koji mora da zadovolji svaki red u tabeli da bi bio uzet u postupak grupisanja.

  12. Napravi upit koji prikazuje u koloni SifraClana šifre članova, u koloni UkupnoDana ukupno trajanje pozajmice, ali sve to samo za članove kod kojih je ukupno trajanje pozajmice veće od 7 dana SELECT SifC As SifraClana, SUM(Dana) As UkupnoDana FROM Pozajmica GROUP BY SifC HAVING SUM(Dana)>7 ORDER BY SifraClana ZAKLJUČAK: U HAVING opciji, navodi se uslov koji mora da zadovolji svaki red nastao svođenjem da bi bio prikazan u rezultatu.

  13. Napravi upit koji prikazuje u koloni SifraAutora šifre autora, u koloni BrojNaslova koliko puta se neki autor pojavljuje kao prvi navedeni autor SELECT SifA As SifraAutora, COUNT(*) As Broj FROM Je_Autor WHERE Koji=1 GROUP BY SifA • Napravi upit koji prikazuje u koloni SifraClana šifre clanova, u koloni BrojKnjiga koliko knjiga član trenutno drži, ali rezultat prikazati samo za članove koji drže više od jedne knjige SELECT SifC As SifraClana, COUNT(*) As BrojKnjiga FROM Drzi GROUP BY SifA HAVING COUNT(*)>1

  14. Napravi upit koji prikazuje u koloni SifraClana šifre clanova, u koloni PozajmioPuta za svakog člana koliko je puta pozajmio knjigu duže od 3 dana, ali u rezulatu prikazati samo one članove kod kojih je broj takvih pozajmljivanja veći od 1 SELECT SifA As SifraAutora, COUNT(*) As Broj FROM Je_Autor WHERE Koji=1 GROUP BY SifA • Napravi upit koji prikazuje u koloni SifraClana šifre clanova, u koloni BrojKnjiga koliko knjiga član trenutno drži, ali rezultat prikazati samo za članove koji drže više od jedne knjige SELECT SifC As SifraClana, COUNT(*) As BrojKnjiga FROM Drzi GROUP BY SifA HAVING COUNT(*)>1

  15. Upiti nad više tabela • Upiti nad više tabela podrazumevaju da se vrši spajanje dve ili više tabela po nekom uslovu. Ako se u naredbi ne navede uslov za spajanje, tabele se spajaju preko Dekartovog proizvoda • Pišu se tako što se u FROM opciji SELECT naredbe, umesto jedne, navodi više tabela koje se spajaju

  16. Dekartov proizvod tabela Oblast i Naslov

  17. Spajanje tabela po uslovu Oblast.SifO=Naslo.SifO

  18. Napravi upit koji prikazuje naslove knjiga i nazive njihovih oblasti SELECT N.Naziv, O.Naziv FROM Naslov N, Oblast O WHERE N.SifO=O.SifO ORDER BY N.Naziv • Napravi upit koji prikazuje u koloni Sifra_clana šifre članova koji su pozajmljivali knjige, a u koloni Ime imena tih članova SELECT DISTINCT P.SifC AS Sifra_Clana, Ime FROM Clan C, Pozajmica P WHERE C.SifC=P.SifC

  19. Napravi upit koji prikazuje naslove koji imaju više od jednog autora SELECT DISTINCT Naziv AS Naslov FROM Naslov N, Je_Autor J WHERE N.SifN=J.SifN AND Koji>1 • Napravi upit koji prikazuje u koloni Ime imena članova koji su pozajmljivali knjige više od 5 dana, u koloni Šifra njihove šifre, sortirano rastuće po imenu člana (ime treba da se u rezultatu pojavljuje samo jednom) SELECT DISTINCT C.SifC AS Šifra, Ime FROM Clan C, Pozajmica P WHERE C.SifC=P.SifC AND Dana>5 ORDER BY Ime

  20. Napravi upit koji prikazuje u koloni Sifra_nasl šifre naslova koje članovi drže kod sebe, a u koloni Naslov naslove tih knjiga SELECT DISTINCT N.SifN AS Sifra_nasl, Naslov As Naziv FROM Drzi D, Knjiga K, Naslov N WHERE D.SifK=K.SifK AND K.SifN=N.SifN • Napravi upit koji u koloni Ime_clana prikazuje imena članova koji trenutno drže knjigu, a u koloni Naslov naslove knjiga koje članovi drže SELECT DISTINCT C.Ime AS Ime_clana, Naslov AS Naziv FROM Drzi D, Clan C, Knjiga K, Naslov N WHERE D.SifC=C.SifC AND D.SifK=K.SifK AND K.SifN=N.SifN

  21. Redni upiti nad više tabela sa svodnim rezultatom • Napravi upit koji prikazuje u koloni Broj_knjiga koliko ima knjiga iz oblasti sa šifrom oblasti BP SELECT COUNT(*) FROM Knjiga K, Naslov N WHERE K.SifN=N.SifN AND N.SifO= 'BP' • Napravi upit koji prikazuje u koloni Ukupno_dana ukupno trajanje svih pozajmica za naslove sa šifrom oblasti PJ SELECT SUM(Dana) AS Ukupno_dana FROM Pozajmica P, Naslov N WHERE P.SifN=N.SifN AND SifO='PJ'

  22. Napravi upit koji prikazuje u koloni Broj_knjiga koliko su knjiga napisali autori koji se prezivaju Petrović SELECT COUNT(DISTINCT J.SifA) AS Broj_knjiga FROM Autor A, Je_Autor J WHERE A.SifA=J.SifA AND A.Ime LIKE '%Petrović%' • Napravi upit koji prikazuje u koloni Broj_autora koliko ima autora koji su pisali neki naslov sa šifrom oblasti RM SELECT COUNT(DISTINCT J.Sifa) AS Broj_autora FROM Je_Autor J, Naslov N WHERE J.SifN=N.SifN AND SifO='RM'

  23. Svodni upiti nad više tabela • Napravi upit koji prikazuje u koloni Sifra_cl šifru člana, u koloni Ime imena članova, u koloni Dana koliko je ukupno dana član držao knjige kod sebe SELECT P.SifC, Ime, SUM(Dana) FROM Pozajmica P, Clan C WHERE P.SifC=C.SifC GROUP BY P.SifC, Ime • Napravi upit koji prikazuje u koloni Naziv_Obl nazive oblasti, u koloni Broj_Nasl broj naslova iz neke oblasti SELECT O.Naziv AS Naziv_Obl, COUNT(*) AS Broj_nasl FROM Oblast O, Naslov N WHERE O.SifO=N.SifO GROUP BY O.Naziv

  24. Napravi upit koji prikazuje u koloni Sifra_nasl šifre naslova iz oblasti sa šifrom oblasti PJ, u koloni Naslov naslove iz iste oblasti, u koloni Broj_knj koliko ima primeraka knjiga za neki naslov SELECT N.SifN AS Sifra_nasl, Naziv AS Naslov, COUNT(*) AS Broj_knj FROM Naslov N, Knjiga K WHERE N.SifN=K.SifN AND N.SifO=‘PJ’ GROUP BY N.SifN, Naziv • Napravi upit koji prikazuje u koloni Ime imena članova koji trenutno drže više od jedne knjige SELECT Ime, COUNT(*) FROM Drzi D, Clan C WHERE D.SifC=C.SifC GROUP BY Ime HAVING COUNT(*)>1

  25. Podupiti

More Related