» »

SQL - izpit

SQL - izpit

ivana213 ::

1.Za relacijsko shemo zapiši s SQL ukazi naslednje:
ČLAN KNJIŽNICE:
ŠIFRA IME PRIIMEK NASLOV ŠIFRA_KNJIŽNICE STAROST
KNJIŽNICA:
ŠIFRA NAZIV VODJA
KNJIGA:
ŠIFRA NASLOV LETO_IZDAJE
IZPOSOJA:
ŠIFRA_ĆLANA_KNJIŽNICE ŠIFRA_KNJIGA DATUM
a. Poiščite ime vsakega člana, ki si je že izposodil knjigo z naslovom Pod svobodnim soncem v knjižnicah, kjer je vodja Mihalic, ki je vodja večih enot knjižnice.

SELECT ime
FROM CLANKNJIZNICE
WHERE sifra IN (SELECT sifra_clana_knjiznice FROM izposoja WHERE sifra_knjiga IN (SELECT sifra FROM knjiga WHERE naslov='Pod svobodnim soncem')) AND sifra_knjiznice IN (SELECT sifra FROM knjiznica WHERE vodja = 'Mihalic');


b. Izpišite najmanjšo, največjo in povprečno število izposojenih knjig članov.

SELECT max(stevilo), min(stevilo), avg(stevilo)
FROM (SELECT count(*) AS stevilo FROM izposoja GROUP BY sifra_clana_knjiznice);


c. Zbrišite vse knjige izdane pred petdesetimi leti.

DELETE *
FROM knjiga
WHERE leto_izdaje = 1958;


d. Izpišite vse knjige,ki niso izposojene v vseh knjižnicah. // Jaz imam kodo za tiste ko niso v nobeni izposojene

SELECT naslov
FROM knjiga
WHERE knjiga.sifra NOT IN(SELECT sifra_knjiga FROM izposoja);


e. Izpišite priimke članov in naslove knjig izposojenih 15.10.2004.
SELECT priimek
FROM clanknjiznice
WHERE sifra IN(SELECT sifra_clana_knjiznice FROM izposoja WHERE datum=#15/10/2004#);


Bi mi znal kdo rešit pravilno d, ker moja koda ni za točno to kaj naloga sprašuje.
e tudi ni prav.

Delamo pa v Accessu. In pa nismo sploh omenjali in pa uporabljali funkcije inner join... to sem zasledila v knjigi ko sem se učila, pa na internetu sem vidla da se po vsej verjetnosti dosti primerov dela na ta način, ampak mi naj nebi smeli.

FTad ::

šit, na kermu faxu pa učijo takšnega pisanja poizvedb? Ne vidim smisla, da bi moral pisat brez možnosti left outer join-ov in inner joinov pisat.

Pa tudi sama relacijska baza je pomanjkljivo definirana z id ključi...

Si ziher pravilno iz izpita prepisala navodilo? Daj raje skeniraj, pa nalimaj gor.

ivana213 ::

Ja... kopirano je direkt. To je še najbol normaln izpit. Sej tisti ko jim to boljše gre so se tut ful pritoževali :)

Jaz sem si drugače naredla to bazo pa mi a,b,c pa moja verzija d, delajo vredu

Zgodovina sprememb…

  • spremenila: ivana213 ()

FrEaKmAn ::

lahko kje uploadaš tvojo obstoječo access bazo? da ne ustvarjam vsega ponovno...

lebdim ::

ne, tole se da na lepši način poizvedet.

ivana213 ::

https://www.dropbox.com/s/xbz6u054eycow...

lebdim meni je pomembno bol da razumem pa znam to napisat na izpitu... ni mi tolko pomembno da je lepo pa čim bol optimalno napisano :) zadnji izpit je... ni več tolko motivacije :D

FrEaKmAn ::

nesmete uporabljani nobenih joinov ali samo inner joins? ker e) je malo težko rešiti brez joinov...

ivana213 ::

ne da jih nesmemo uporabljat ampak tega niti omenli nismo in ful komplicira če delamo kaj po svoje... vem, mimo :) bi mi lahko napiso z inner joini pa se bom naučila kak se dela s tem za ta primer?

FrEaKmAn ::

za e) je lep primer

SELECT c.priimek, k.naslov
FROM clanknjiznice c, izposoja i, knjiga k 
WHERE i.sifra_clana_knjiznice = c.sifra AND i.sifra_knjiga = k.sifra AND i.datum=#15/10/2004#


Malo razlage. Torej naenkrat beremo iz treh tabel, pri čemer potem združujemo zapise glede na skupne kriterije. Oz, iščemo tak zapis, kjer je datum enak 15/10/2004 ter obstaja tak clan knjižnice in taka knjiga.

V tem primeru bo izpisalo samo tiste vrednosti, ki so prisotne v vseh treh tabelah, torej je to navadni oz. inner join. Obstajajo tudi drugačni joini (left, right, outer..), kateri se predvsem razlikujejo v tem katere relacije upošteva oz. kako zapise združuje. Več o tem na http://stackoverflow.com/a/19646594/730....

ivana213 ::

najlepša hvala, tak na prvi pogled se mi zdi ful lažje na ta način... pa malo sem si prebrala tudi kaj pomeni left, right ... join in je dejansko ful logično... samo mi delamo v accesu vse in mi je sošolec reko da menda nismo tega delali ker ne podpira tega access.
jutri bom dobila še en izpit ki je bil na zadnje in ga bom rešla, ampak dvomim da bom vse znala, tak da če boš mel kaj časa bi te lepo prosla da še pol tisto pogledaš :)

FTad ::

Da Access ne podpira left, right in ostalih joinov je bullshit.... Res mi ni jasno, kaj ste počeli pri tem predmetu oz kaj je prof. razlagala :S


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

TSQL rekurzivno

Oddelek: Programiranje
11883 (622) hamez66
»

združevanje in poizvedbe

Oddelek: Programiranje
7855 (715) prozac
»

[SQL] teževa pri iskanju zapisov

Oddelek: Programiranje
102063 (1653) lopow
»

[Oracle] Osnovno povpraševanje problem

Oddelek: Programiranje
151875 (1516) zdravc
»

SQL vprašanje

Oddelek: Izdelava spletišč
302637 (2200) jerneju

Več podobnih tem