Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
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] |
|
Tiho Forumaš(ica)
Pridružen/a: 30. 01. 2006. (17:04:25) Postovi: (3E)16
|
|
[Vrh] |
|
LSSD Forumaš(ica)
Pridružen/a: 19. 01. 2005. (19:11:16) Postovi: (CB)16
Lokacija: SD CN
|
|
[Vrh] |
|
Tiho Forumaš(ica)
Pridružen/a: 30. 01. 2006. (17:04:25) Postovi: (3E)16
|
Postano: 0:25 pet, 29. 6. 2007 Naslov: |
|
|
[quote="LSSD"][quote="Tiho"]Ispisati ime i placu nastavnika s najvecom placom:da li je ovo dobro?
select LNAME,SALARY from LECTURER where MAX(SALARY);[/quote]
Fali ti jedan dio:
SELECT LNAME, SALARY FROM LECTURER WHERE SALARY=MAX(SALARY);
ili moze i ovako:
SELECT LNAME, SALARY FROM LECTURER ORDER BY SALARY DESC LIMIT 0,1;[/quote]
Ok1samo jos jedno pitanje sta znaci taj desc 0,1?
sta da smo trebali ispisat npr.prva 3 najbolje placena?to ima s tim veze?
Hvala
LSSD (napisa): | Tiho (napisa): | Ispisati ime i placu nastavnika s najvecom placom:da li je ovo dobro?
select LNAME,SALARY from LECTURER where MAX(SALARY); |
Fali ti jedan dio:
SELECT LNAME, SALARY FROM LECTURER WHERE SALARY=MAX(SALARY);
ili moze i ovako:
SELECT LNAME, SALARY FROM LECTURER ORDER BY SALARY DESC LIMIT 0,1; |
Ok1samo jos jedno pitanje sta znaci taj desc 0,1?
sta da smo trebali ispisat npr.prva 3 najbolje placena?to ima s tim veze?
Hvala
|
|
[Vrh] |
|
ta2a Forumaš(ica)
Pridružen/a: 01. 09. 2004. (12:59:54) Postovi: (B4)16
Spol:
Lokacija: zg
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
|