Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
krcko Forumaš nagrađen za životno djelo


Pridružen/a: 07. 10. 2002. (15:57:59) Postovi: (18B3)16
|
Postano: 22:28 sri, 12. 7. 2006 Naslov: |
|
|
Evo danasnjeg roka i obecanih rjesenja za 3. zadatak. To je naravno samo jedan moguci nacin da se dobiju trazeni rezultati pomocu SQL-a (za zadnje pitanje dva nacina).
[code:1]select * from lecturer where roomno=304;[/code:1]
[code:1]select sname, birthdate from student, report where student.sno=report.sno and cno=216;[/code:1]
[code:1]select distinct(title) from course, report, student where course.cno=report.cno and report.sno=student.sno and level=2 and mark>=80 order by title;[/code:1]
[code:1]select lecturer.lname from lecturer, course where lecturer.lname=course.lname group by lecturer.lname having count(cno)>=3;[/code:1]
Zadnji odgovor s ugnjijezdjenim selectom:
[code:1]select title from course where cno not in (select cno from student, report where student.sno=report.sno and sname like 'R%');[/code:1]
Bez ugnjezdjivanja:
[code:1]create temporary table r_upisali select cno from student, report where student.sno=report.sno and sname like 'R%';
select title from course left join r_upisali on course.cno=r_upisali.cno where r_upisali.cno is NULL;
[/code:1]
Evo danasnjeg roka i obecanih rjesenja za 3. zadatak. To je naravno samo jedan moguci nacin da se dobiju trazeni rezultati pomocu SQL-a (za zadnje pitanje dva nacina).
Kod: | select * from lecturer where roomno=304; |
Kod: | select sname, birthdate from student, report where student.sno=report.sno and cno=216; |
Kod: | select distinct(title) from course, report, student where course.cno=report.cno and report.sno=student.sno and level=2 and mark>=80 order by title; |
Kod: | select lecturer.lname from lecturer, course where lecturer.lname=course.lname group by lecturer.lname having count(cno)>=3; |
Zadnji odgovor s ugnjijezdjenim selectom:
Kod: | select title from course where cno not in (select cno from student, report where student.sno=report.sno and sname like 'R%'); |
Bez ugnjezdjivanja:
Kod: | create temporary table r_upisali select cno from student, report where student.sno=report.sno and sname like 'R%';
select title from course left join r_upisali on course.cno=r_upisali.cno where r_upisali.cno is NULL;
|
_________________ Vedran Krcadinac
Ljudi su razliciti, a nula je paran broj.
Description: |
|
 Download |
Filename: |
bp06-07-12.pdf |
Filesize: |
73.95 KB |
Downloaded: |
436 Time(s) |
|
|
[Vrh] |
|
allllice Forumaš(ica)

Pridružen/a: 16. 09. 2005. (14:31:59) Postovi: (121)16
Spol: 
Lokacija: Zagreb
|
|
[Vrh] |
|
mirkovic Forumaš(ica)

Pridružen/a: 29. 11. 2006. (15:28:18) Postovi: (2)16
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
greeneyes Forumaš(ica)


Pridružen/a: 13. 09. 2004. (11:44:20) Postovi: (CD)16
Spol: 
Lokacija: The water's edge Is where she waits
|
Postano: 21:55 uto, 26. 6. 2007 Naslov: |
|
|
[quote="Anonymous"]1.ispisi koliko ima nastavnika u svakoj sobi.
2.ispisite koliko kolegija predaje pojedini nastavnik no samo za nastavnike koji predaju manje od 5 kolegija.
3.ispisati sve autore,te uz svakoga od njih broj knjiga kojima je on autor.ispis treba biti uzlazno sortiran po broju knjiga.
4.ispisi imena calnova cije je adresa neupisana.
evo ga,hvala unaprijrd... :lol:[/quote]
1. SELECT ROOMNO, COUNT(*) FROM LECTURER GROUP BY ROOMNO;
2. SELECT LECTURER.LNAME, COUNT(*) FROM LECTURER,COURSE WHERE LECTURER.LNAME=COURSE.LNAME GROUP BY LECTURER.LNAME HAVING COUNT(*)<5;
/*ovo mi bas nije prejasno zasto dobro radi ;) al izgleda da je ok*/
ne znam za ovo trece kako izgledaju tablice al pod 4 je IS NULL poanta, recimo: SELECT IME_CLANA FROM IME_TABLICE WHERE ADRESA IS NULL;
znat cu vise tamo oko sedmog sedmog ;)
Anonymous (napisa): | 1.ispisi koliko ima nastavnika u svakoj sobi.
2.ispisite koliko kolegija predaje pojedini nastavnik no samo za nastavnike koji predaju manje od 5 kolegija.
3.ispisati sve autore,te uz svakoga od njih broj knjiga kojima je on autor.ispis treba biti uzlazno sortiran po broju knjiga.
4.ispisi imena calnova cije je adresa neupisana.
evo ga,hvala unaprijrd...  |
1. SELECT ROOMNO, COUNT(*) FROM LECTURER GROUP BY ROOMNO;
2. SELECT LECTURER.LNAME, COUNT(*) FROM LECTURER,COURSE WHERE LECTURER.LNAME=COURSE.LNAME GROUP BY LECTURER.LNAME HAVING COUNT(*)<5;
/*ovo mi bas nije prejasno zasto dobro radi al izgleda da je ok*/
ne znam za ovo trece kako izgledaju tablice al pod 4 je IS NULL poanta, recimo: SELECT IME_CLANA FROM IME_TABLICE WHERE ADRESA IS NULL;
znat cu vise tamo oko sedmog sedmog
_________________ Am I so different from you
Now does it scare you that I'm able to discern
What to love and what to burn..
Don't judge what you don't understand..
// Disturbed: Fear
|
|
[Vrh] |
|
Tiho Forumaš(ica)


Pridružen/a: 30. 01. 2006. (17:04:25) Postovi: (3E)16
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
greeneyes Forumaš(ica)


Pridružen/a: 13. 09. 2004. (11:44:20) Postovi: (CD)16
Spol: 
Lokacija: The water's edge Is where she waits
|
Postano: 20:32 sri, 27. 6. 2007 Naslov: |
|
|
[quote="Anonymous"]sto ne bi trbalo za drugi biti rjesenje:
SELECT LNAME,COUNT(CNO) FROM COURSE GROUP BY LNAME HAVING COUNT(CNO)<5;[/quote]
fkors da bi, odnosno, je
jedino sto mogu reci u svoju obranu je da sam spavala kojih 4 sata noc prije, nadam se da zato nisam vidjela koju glupost radim ;)
za ovo s prebrojavanjima, koja je razlika, vidi [url]http://web.math.hr/~karaga/funkcije3.jpg[/url]
Anonymous (napisa): | sto ne bi trbalo za drugi biti rjesenje:
SELECT LNAME,COUNT(CNO) FROM COURSE GROUP BY LNAME HAVING COUNT(CNO)<5; |
fkors da bi, odnosno, je
jedino sto mogu reci u svoju obranu je da sam spavala kojih 4 sata noc prije, nadam se da zato nisam vidjela koju glupost radim
za ovo s prebrojavanjima, koja je razlika, vidi http://web.math.hr/~karaga/funkcije3.jpg
_________________ Am I so different from you
Now does it scare you that I'm able to discern
What to love and what to burn..
Don't judge what you don't understand..
// Disturbed: Fear
|
|
[Vrh] |
|
LSSD Forumaš(ica)

Pridružen/a: 19. 01. 2005. (19:11:16) Postovi: (CB)16
Lokacija: SD CN
|
|
[Vrh] |
|
LSSD Forumaš(ica)

Pridružen/a: 19. 01. 2005. (19:11:16) Postovi: (CB)16
Lokacija: SD CN
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
greeneyes Forumaš(ica)


Pridružen/a: 13. 09. 2004. (11:44:20) Postovi: (CD)16
Spol: 
Lokacija: The water's edge Is where she waits
|
|
[Vrh] |
|
darioo Forumaš(ica)

Pridružen/a: 06. 02. 2005. (14:26:16) Postovi: (9)16
|
Postano: 16:47 čet, 28. 6. 2007 Naslov: |
|
|
[quote="LSSD"]Kako glasi upit za:
Ispisite imena studenata koji su upisali [b]sve[/b] kolegije koje predaje nastavnik Black?[/quote]
Standardna procedura za ovakve stvari jest dvostruka negacija, kao što je opisano u skripti profesora Mangera na stranicama 30, 31. No ovakav pristup zna biti ponekad dosta nezgrapan, pa sam nakon malo mozganja došao do upita koji bi trebao biti dobar (nadam se). Ako netko primjeti grešku, bio bih zahvalan da mi javi.
select sname from student, report, course
where student.sno = report.sno and report.cno = course.cno and
course.lname = 'black' group by sname having count(*) =
(select count(*) from course where lname = 'black');
Ideja je ovakva: prvo uzmemo imena svih studenata koji su upisali neki kolegij kojeg predaje nastavnik Black. Nakon toga ih grupiramo po imenu i ispisujemo one koji su upisali upravo onoliko kolegija koliko ih drži Black.
Usput, zadatak iz skripte glasi ovako:
Pronađi brojeve onih studenata koji su upisali sve kolegije.
Rješenje ovoga po gornjoj ideji bi išlo otprilike ovako:
select student.sno from student, report where student.sno = report.sno
group by student.sno having count(*) = (select count(*) from course);
Edit: gornji upit je ispravljen
LSSD (napisa): | Kako glasi upit za:
Ispisite imena studenata koji su upisali sve kolegije koje predaje nastavnik Black? |
Standardna procedura za ovakve stvari jest dvostruka negacija, kao što je opisano u skripti profesora Mangera na stranicama 30, 31. No ovakav pristup zna biti ponekad dosta nezgrapan, pa sam nakon malo mozganja došao do upita koji bi trebao biti dobar (nadam se). Ako netko primjeti grešku, bio bih zahvalan da mi javi.
select sname from student, report, course
where student.sno = report.sno and report.cno = course.cno and
course.lname = 'black' group by sname having count(*) =
(select count(*) from course where lname = 'black');
Ideja je ovakva: prvo uzmemo imena svih studenata koji su upisali neki kolegij kojeg predaje nastavnik Black. Nakon toga ih grupiramo po imenu i ispisujemo one koji su upisali upravo onoliko kolegija koliko ih drži Black.
Usput, zadatak iz skripte glasi ovako:
Pronađi brojeve onih studenata koji su upisali sve kolegije.
Rješenje ovoga po gornjoj ideji bi išlo otprilike ovako:
select student.sno from student, report where student.sno = report.sno
group by student.sno having count(*) = (select count(*) from course);
Edit: gornji upit je ispravljen
Zadnja promjena: darioo; 22:02 čet, 28. 6. 2007; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
Gost
|
Postano: 19:39 čet, 28. 6. 2007 Naslov: |
|
|
R1(A_, B_, C, D)
R2(E_, F, G)
R3(H_, I_, J_)
A -> C
F -> G
H ->->J
kako rastaviti R3?
Jasno je kako to napraviti kad imam i H ->->I, ali sta kad imam ovaj slucaj?
Unaprijed zahvaljujem!
R1(A_, B_, C, D)
R2(E_, F, G)
R3(H_, I_, J_)
A -> C
F -> G
H ->->J
kako rastaviti R3?
Jasno je kako to napraviti kad imam i H ->->I, ali sta kad imam ovaj slucaj?
Unaprijed zahvaljujem!
|
|
[Vrh] |
|
ta2a Forumaš(ica)


Pridružen/a: 01. 09. 2004. (12:59:54) Postovi: (B4)16
Spol: 
Lokacija: zg
|
|
[Vrh] |
|
LSSD Forumaš(ica)

Pridružen/a: 19. 01. 2005. (19:11:16) Postovi: (CB)16
Lokacija: SD CN
|
Postano: 21:01 čet, 28. 6. 2007 Naslov: |
|
|
[quote="greeneyes"]
prvo se obavi grupiranje.. count(*) uzme grupu i gleda kolko je u njoj redaka, count(cno) gleda kolko redaka iz te grupe ima ne-null vrijednost za cno, ak su sve upisane(ko u bazi prof mangera), onda bi valjda trebalo bit isto. al to je ono: cini mi se da bi tak trebalo biti, ti se da provjeriti? ;)[/quote]
kako je CNO primarni kljuc i ne smije nikad biti NULL, onda je ovo dvoje isto :)
greeneyes (napisa): |
prvo se obavi grupiranje.. count(*) uzme grupu i gleda kolko je u njoj redaka, count(cno) gleda kolko redaka iz te grupe ima ne-null vrijednost za cno, ak su sve upisane(ko u bazi prof mangera), onda bi valjda trebalo bit isto. al to je ono: cini mi se da bi tak trebalo biti, ti se da provjeriti?  |
kako je CNO primarni kljuc i ne smije nikad biti NULL, onda je ovo dvoje isto
_________________ ' Zasto jednostavno kad moze i komplicirano?'
Zadnja promjena: LSSD; 21:02 čet, 28. 6. 2007; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
LSSD Forumaš(ica)

Pridružen/a: 19. 01. 2005. (19:11:16) Postovi: (CB)16
Lokacija: SD CN
|
|
[Vrh] |
|
LSSD Forumaš(ica)

Pridružen/a: 19. 01. 2005. (19:11:16) Postovi: (CB)16
Lokacija: SD CN
|
|
[Vrh] |
|
kreso Forumaš(ica)

Pridružen/a: 03. 10. 2004. (21:44:46) Postovi: (7B)16
|
|
[Vrh] |
|
|