Jak i gdzie można sprawdzić swoje umiejętności w php, js, mysql?

octonapewno

Użytkownik
Dołączył
Maj 22, 2008
Posty
110
tak jak w temacie, przeczytałem kilka kursów z tych trzech języków, i potrafię zrobić strona opartą o te 3 języki programowania, ale chciałbym sprawdzić moją wiedzę na ich temat. Tzn. interesują mnie strony gdzie są zadania, które można wykonać.
 

octonapewno

Użytkownik
Dołączył
Maj 22, 2008
Posty
110
dzięki, za tą stronę, ale mi chodzi o takie strony gdzie będzie napisane np. Zad.1 Napisz skrypt w PHP który wyświetla "Hello World".(to jest tylko durny przykład), chodzi mi o takie zadania(znaczy bardziej zaawansowane), ale HackSite jakieś też mogą być.
 

cyber_pl

Użytkownik
Dołączył
Wrzesień 30, 2009
Posty
187
http://projecteuler.net/ Masz zadania, robisz tylko algo do niego i rozwiazujesz zadanie :)

bardzo dobry serwis, maja rozne zadania nie tylko natury informatycznej. chodzi raczej o rozwiazywanie zadan / problemow matematycznych za pomoca umiejetnosci informatycznych np za pomoca programowania. umiejetnosc php lub tez js powinna wystarczyc do obliczen.
 

nowy_me

Użytkownik
Dołączył
Luty 7, 2007
Posty
451
najlepszym testem, a zarazem okazją do nauki jest napisanie jakieś aplikacji www, wymyśl sobie coś i spróbuj to napisać, ew. jak nie masz pomysłu przejrzyj jakieś zlecenia i coś napisz, jak czujesz się na siłach to może spróbuj zrealizować jakieś zlecenie
jak totalnie nie masz pomysłu spróbuj napisać prosty sklep internetowy, zawsze się może przydać(raz napiszesz i sprzedasz kilka razy), i pewnie wiele się też przy tym nauczysz
 

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
jak totalnie nie masz pomysłu spróbuj napisać prosty sklep internetowy, zawsze się może przydać(raz napiszesz i sprzedasz kilka razy), i pewnie wiele się też przy tym nauczysz
Najpierw zainteresuj się zabezpieczaniem skryptów, żebyś nie sprzedał dziurawego cms'a. To także jest ciekawe :) Poczytaj o SQL Injection, Cross Site Scripting, Arbitrary File Download, Source Code Disclosure, Cross-site request forgery, Local File Include, Remote File Include, Remote Code Execution, Php Code Injection, Bypass i to chyba tyle :) Przyda się do końca.
 

octonapewno

Użytkownik
Dołączył
Maj 22, 2008
Posty
110
nowy_me wielkie dzięki za podsunięcie pomysłu, tak właśnie też o tym myślałem żeby to zrobić i to chyba będzie najlepsze rozwiązanie.

discovery44 Tobie też wielkie dzięki, poczytam na pewno.
 

nowy_me

Użytkownik
Dołączył
Luty 7, 2007
Posty
451
a tak apropo SQL'a to mi się przypomniało, kiedyś jak już myślałem że znam SQL'a zaczęły się zajęcia z baz danych na mojej uczelni :D i dość szybko zrozumiałem że SQL'a jeszcze nie wiele wiem:
Schemat bazy: http://zti.polsl.pl/bd/labbd/labbd.txt http://zti.polsl.pl/bd/labbd/diagram_labbd.pdf
Zadania 1: http://zti.polsl.pl/bd/sql1a.doc http://zti.polsl.pl/bd/sql1b.doc http://zti.polsl.pl/bd/sql1c.doc
Zadania 2: http://zti.polsl.pl/bd/sql2a.doc http://zti.polsl.pl/bd/sql2b.doc
miłej zabawy :D jak komuś będą potrzebne rozwiązania to mogę je pokazać, przydatność praktyczna niektórych poleceń jest znikoma, ale warto przynajmniej wiedzieć że tak się da
 
Ostatnia edycja:

nowy_me

Użytkownik
Dołączył
Luty 7, 2007
Posty
451
Uwaga spojler - odpowiedzi
Zad 1 Zestaw a:
Kod:
1. 
select temat 
from tematy 
where nr_tem=5 
 
2.     
select nazwisko 
from pracownicy 
where nazwisko like 'K%' 
 
3. 
select temat 
from tematy t, pracownicy p 
where (t.nr_prac_kt=p.nr_prac) and nazwisko='MISIURA' 
 
4. 
select data_wypl 
from wyplaty w, pracownicy p 
where w.nr_prac=p.nr_prac and p.nr_prac in 
(select nr_prac 
from pracownicy 
where plec='K' and data_ur<'1970') 
order by data_wypl 
 
5.     
select distinct nazwa_funkcji 
from funkcje f, przydzialy p 
where f.kod_funkcji=p.kod_funkcji and p.nr_prac in 
(select nr_prac 
from pracownicy 
where nazwisko='MISIURA') 
 
6.     
select distinct p.nazwisko 
from pracownicy p, przydzialy pp 
where p.plec='M' and p.nr_prac=pp.nr_prac and pp.nr_tem in 
(select t.nr_tem  
from tematy t, przydzialy p 
where t.nr_tem=p.nr_tem and( temat='GUPTA' or temat='DYSK')) 
order by nazwisko desc 
 
7.     
select distinct nazwa_funkcji 
from funkcje f, przydzialy p, tematy t 
where f.kod_funkcji=p.kod_funkcji and t.nr_tem=p.nr_tem and  t.data_rozp<'1990' and t.data_odb<'1990' 
 
8.     
select t1.temat, t2.temat 
from tematy t1, tematy t2 
where t1.nr_tem=t2.nr_tem_nadrz 
 
9.     
select count(p.nr_prac) 
from przydzialy p, pracownicy pp 
where p.nr_prac=pp.nr_prac and pp.nazwisko='MISIURA' 
 
10.     
select sum(w.kwota) 
from tematy t, wyplaty w 
where w.nr_tem=t.nr_tem and t.temat='DYSK' 
 
11.     
select avg(w.kwota) 
from wyplaty w, tematy t 
where t.nr_prac_KT=w.nr_prac 
 
12. 
select t.temat, count(w.kwota), sum(w.kwota) 
from tematy t, wyplaty w 
where t.nr_tem=w.nr_tem 
group by t.temat 
 
13.     
select p.nr_prac, avg(w.kwota) 
from pracownicy p, wyplaty w 
where p.nr_prac=w.nr_prac 
group by p.nr_prac 
 
14. 
select  f.nazwa_funkcji, min(p.data_ur) 
from pracownicy p, przydzialy pp, funkcje f 
where p.nr_prac=pp.nr_prac and pp.kod_funkcji=f.kod_funkcji 
group by f.nazwa_funkcji 
 
15.     
select t.temat, count(p.kod_funkcji) 
from tematy t, przydzialy p, funkcje f 
where t.nr_tem=p.nr_tem and p.kod_funkcji=f.kod_funkcji and  f.nazwa_funkcji='TESTER' 
group by t.temat 
 
16.     
select t.temat 
from tematy t, wyplaty w 
where t.nr_tem=w.nr_tem  
group by t.temat  
having sum(w.kwota) <400 
 
17.     
select p.nazwisko 
from pracownicy p, przydzialy pp 
where p.nr_prac=pp.nr_prac  
group by p.nazwisko 
having count(distinct p.nr_tem)>5 
 
18. 
select t1.temat 
from tematy t1 
where t1.data_rozp< 
(select t2.data_rozp 
from tematy t2 
where t2.temat='DYSK') 
 
19.     
select p.nazwisko, p.nr_prac 
from pracownicy p, wyplaty w 
where p.nr_prac=w.nr_prac  
group by p.nazwisko, p.nr_prac 
having sum(w.kwota)> 
(select sum(w.kwota) 
from pracownicy p, wyplaty w 
where p.nr_prac=w.nr_prac and p.nazwisko='MISIURA') 
 
20.     
from tematy t, przydzialy p 
where t.nr_tem=p.nr_tem 
group by t.temat 
having count(distinct p.nr_prac)> 
(select count(distinct p2.nr_prac) 
from tematy t2, przydzialy p2 
where t2.nr_tem=p2.nr_tem and t2.temat='DYSK')
Zad 1 Zestaw b:
Kod:
Zadanie 1: 
SELECT nazwisko FROM studenci WHERE nr_stud=5 
 
Zadanie 2: 
SELECT nazwa_przedm FROM przedmioty WHERE nazwa_przedm like "A%" 
 
Zadanie 3: 
SELECT nazwisko FROM studenci s JOIN kierunki k ON s.nr_kier=k.nr_kier  WHERE nazwa_kier = "BUDOWA MC" 
 
Zadanie 4: 
SELECT DISTINCT nazwisko FROM studenci s JOIN oceny o ON  s.nr_stud=o.nr_stud WHERE ocena >= 4.5 AND plec = 'K' ORDER BY  nazwisko 
 
Zadanie 5: 
SELECT Nazwa_Przedm FROM Przedmioty p JOIN typy_przedmiotow tp ON  p.kod_tprzedm=tp.kod_tprzedm JOIN Kierunki k ON p.nr_kier=k.nr_kier  WHERE Nazwa_kier="BUDOWA MC" AND nazwa_tprzedm = "Wykład" 
 
Zadanie 6: 
SELECT DISTINCT nazwisko FROM studenci s JOIN kierunki k ON  s.nr_kier=k.nr_kier WHERE plec = "M" AND Nazwa_kier="INFORMATYKA" OR  Nazwa_kier="ELEKTRONIKA MED" ORDER BY Nazwisko DESC 
 
Zadanie 7: 
SELECT DISTINCT Nazwa_przedm FROM przedmioty p JOIN oceny o ON  p.nr_przedm=o.nr_przedm WHERE ocena=5 ORDER BY Nazwa_przedm 
 
Zadanie 8: 
SELECT N.Nazwa_przedm, P.Nazwa_przedm FROM przedmioty N JOIN przedmioty P  ON N.nr_przedm=P.nr_przedm_nadrz 
 
Zadanie 9: 
SELECT COUNT(Nazwisko) FROM studenci s JOIN kierunki k ON  s.nr_kier=k.nr_kier WHERE nazwa_kier="INFORMATYKA" 
 
Zadanie 10: 
SELECT AVG(ocena) FROM studenci s JOIN oceny o ON s.nr_stud=o.nr_stud  WHERE nazwisko="KOWALSKI" 
 
Zadanie 11: 
SELECT AVG(ocena) FROM studenci s JOIN oceny o ON s.nr_stud=o.nr_stud  JOIN kierunki k ON s.nr_kier=k.nr_kier WHERE Nazwa_kier="ELEKTRONIKA  MED" 
 
Zadanie 12: 
SELECT s.nr_stud, Nazwisko, MIN(ocena), MAX(ocena) FROM studenci s JOIN  oceny o ON s.nr_stud=o.nr_stud GROUP BY s.nr_stud, Nazwisko 
 
Zadanie 13: 
SELECT s.nr_stud, Nazwisko, AVG(ocena) FROM studenci s JOIN oceny o ON  s.nr_stud=o.nr_stud GROUP BY s.nr_stud, Nazwisko 
 
Zadanie 14: 
SELECT Nazwa_kier, MIN(Data_ur) FROM studenci s JOIN kierunki k ON  s.nr_kier = k.nr_kier GROUP BY Nazwa_kier 
 
Zadanie 15: 
SELECT s.Nr_stud,Nazwisko, Nazwa_przedm,COUNT(ocena) FROM studenci s  JOIN oceny o ON s.nr_stud=o.nr_stud JOIN przedmioty p ON  o.nr_przedm=p.nr_przedm GROUP BY s.nr_stud,s.nazwisko, p.nazwa_przedm 
 
Zadanie 16: 
SELECT nazwa_przedm FROM przedmioty p JOIN oceny o ON  p.nr_przedm=o.nr_przedm GROUP BY nazwa_przedm HAVING count(ocena)>=8 
 
Zadanie 17: 
SELECT nazwa_przedm, COUNT(DISTINCT nazwisko) FROM przedmioty p JOIN  oceny o ON p.nr_przedm=o.nr_przedm JOIN studenci s ON  o.nr_stud=s.nr_stud GROUP BY nazwa_przedm 
 
Zadanie 18: 
SELECT nazwisko FROM studenci WHERE data_ur <( SELECT data_ur FROM  studenci WHERE nazwisko='WILK') 
 
Zadanie 19: 
SELECT nazwisko, AVG(ocena) FROM studenci s JOIN oceny o ON  s.nr_stud=o.nr_stud GROUP BY nazwisko HAVING AVG(ocena) >(SELECT  AVG(ocena) FROM studenci s JOIN oceny o ON s.nr_stud=o.nr_stud WHERE  nazwisko='WALCZAK') 
 
Zadanie 20: 
SELECT nazwa_kier, COUNT(nazwisko) FROM studenci s JOIN kierunki k ON  s.nr_kier=k.nr_kier GROUP BY nazwa_kier HAVING COUNT(nazwisko)  >(SELECT COUNT(nazwisko) FROM studenci s JOIN kierunki k ON  s.nr_kier=k.nr_kier WHERE Nazwa_kier="ELEKTRONIKA MED")
Zad 1 Zestaw c:
Kod:
1. 
SELECT NR_SALI 
FROM SALE S, PRZEDMIOTY P 
WHERE P.NR_PRZEDM = '20' 
2. 
SELECT NAZWISKO 
FROM STUDENCI 
WHERE NAZWISKO LIKE 'M%' 
3.SELECT NAZWA_PRZEDM 
FROM PRZEDMIOTY P, PRACOWNICY K 
WHERE K.NR_PRAC = P.NR_ODP_PRAC AND K.NAZWISKO = 'JANECZEK' 
4. 
SELECT NR_SALI 
FROM  ROZKLADY R 
WHERE R.GODZINA < '14' 
ORDER BY GODZINA 
5. 
SELECT NAZWA_TPRZEDM, NAZWA_PRZEDM 
FROM  PRZEDMIOTY P, TYPY_PRZEDMIOTOW T, ROZKLADY R 
WHERE P.KOD_TPRZEDM=T.KOD_TPRZEDM AND P.NR_PRZEDM = R.NR_PRZEDM AND  R.NR_SALI IN (2,4) 
6. 
SELECT NAZWISKO 
FROM  PRACOWNICY P, SALE S, ROZKLADY R 
WHERE P.NR_PRAC = R.NR_PRAC AND R.NR_SALI = S.NR_SALI AND S.ROZM_SALI  > '20' AND EKRAN = 'T' 
GROUP BY P.NAZWISKO 
ORDER BY P.NAZWISKO 
7. 
SELECT DISTINCT NAZWA_PRZEDM, NR_ZESP, DZIEN, GODZINA 
FROM  PRACOWNICY P, PRZEDMIOTY A, ROZKLADY R 
WHERE P.NR_PRAC = A.NR_ODP_PRAC AND A.NR_PRZEDM = R.NR_PRZEDM AND  R.DZIEN = 'SRO' AND R.GODZINA = '10' 
8. 
SELECT A.NAZWA_PRZEDM, B.NAZWA_PRZEDM 
FROM  PRZEDMIOTY A,PRZEDMIOTY B 
WHERE A.NR_PRZEDM_NADRZ = B.NR_PRZEDM 
9. 
SELECT COUNT(distinct P.NR_PRZEDM) 
FROM PRZEDMIOTY P, PRACOWNICY A, ROZKLADY R 
WHERE R.NR_PRZEDM=P.NR_PRZEDM AND A.NR_PRAC=R.NR_PRAC AND A.NAZWISKO =  'JANECZEK' 
10. 
SELECT MAX(A.DATA_UR), P.NAZWA_PRZEDM 
FROM PRZEDMIOTY P, PRACOWNICY A 
WHERE A.NR_PRAC = P.NR_ODP_PRAC 
GROUP BY P.NAZWA_PRZEDM 
11. 
SELECT MAX(ROZM_SALI) 
FROM SALE S, ROZKLADY R 
WHERE S.NR_SALI = R.NR_SALI AND R.DZIEN= 'PON' AND R.GODZINA BETWEEN 12  AND 16 
12. 
FROM ROZKLADY R 
GROUP BY R.NR_SALI 
13. 
SELECT P.NAZWA_PRZEDM, AVG(O.OCENA) 
FROM PRZEDMIOTY P, OCENY O 
WHERE O.NR_PRZEDM = P.NR_PRZEDM 
GROUP BY P.NAZWA_PRZEDM 
14. 
SELECT A.NAZWISKO, COUNT(P.NR_PRZEDM) 
FROM PRZEDMIOTY P, PRACOWNICY A, ROZKLADY R 
WHERE A.NR_PRAC = P.NR_ODP_PRAC AND A.NR_PRAC=R.NR_PRAC 
GROUP BY A.NAZWISKO 
15. 
SELECT P.NAZWA_PRZEDM, COUNT(DISTINCT A.NAZWISKO) 
FROM PRZEDMIOTY P, PRACOWNICY A, ROZKLADY R 
WHERE R.NR_PRZEDM=P.NR_PRZEDM AND A.NR_PRAC=R.NR_PRAC 
GROUP BY P.NAZWA_PRZEDM 
16. 
SELECT P.NAZWISKO 
FROM PRACOWNICY P, ROZKLADY R 
WHERE P.NR_PRAC = R.NR_PRAC AND R.DZIEN = 'PON' 
HAVING COUNT(*)>1  
17. 
SELECT P.NAZWA_PRZEDM, COUNT(DISTINCT R.NR_SALI) 
FROM PRZEDMIOTY P, ROZKLADY R 
WHERE P.NR_PRZEDM=R.NR_PRZEDM 
GROUP BY P.NAZWA_PRZEDM 
HAVING COUNT(DISTINCT R.NR_SALI)>1 
18. 
SELECT P.NAZWA_PRZEDM 
FROM PRZEDMIOTY P, PRACOWNICY A, PRACOWNICY B 
WHERE A.NR_PRAC = P.NR_ODP_PRAC  AND B.NAZWISKO= 'JANECZEK' AND  A.DATA_UR > B.DATA_UR 
19. 
SELECT A.NAZWISKO 
FROM WYPLATY W, PRACOWNICY A 
WHERE W.NR_PRAC=A.NR_PRAC  
GROUP BY A.NAZWISKO 
HAVING AVG(W.KWOTA) < (SELECT AVG(W.KWOTA)  
FROM PRACOWNICY A, WYPLATY W  
WHERE A.NAZWISKO = 'MISIURA' AND  W.NR_PRAC=A.NR_PRAC) 
20. 
SELECT B.NAZWA_PRZEDM 
FROM PRACOWNICY A, PRZEDMIOTY B, ZESPOLY C 
WHERE A.NR_PRAC = B.NR_ODP_PRAC AND C.NR_ZESP = A.NR_ZESP 
GROUP BY B.NAZWA_PRZEDM 
HAVING COUNT(C.NR_ZESP) > (SELECT COUNT(C.NR_ZESP)   
FROM PRACOWNICY A, PRZEDMIOTY B, ZESPOLY C 
WHERE A.NR_PRAC = B.NR_ODP_PRAC AND C.NR_ZESP = A.NR_ZESP AND  B.NAZWA_PRZEDM = 'ALGEBRA')
Zad 2 zestaw a
Kod:
           1.Dla każdego pracownika odpowiedzialnego za jakiś przedmiot podaj liczbę przedmiotów z których prowadzi zajęcia (tabela ROZKLADY).
 

 select nazwisko, count(distinct nr_przedm) from pracownicy p, rozklady r where p.nr_prac=r.nr_prac and p.nr_prac in (select distinct nr_odp_prac from przedmioty) group by nazwisko;
 

 2. Podaj nazwiska i średnią ocen z przedmiotu ALGEBRA tych studentów, którzy z tego przedmiotu mają więcej niż jedną ocenę.
 

 select nazwisko, avg(ocena) from oceny o, studenci s, przedmioty p where o.nr_stud=s.nr_stud and p.nr_przedm=o.nr_przedm and p.nazwa_przedm="ALGEBRA" group by nazwisko having count(ocena)>1;
 

 3. Podaj przedmioty realizowane przez największą liczbę pracowników.
 

 select nazwa_przedm from przedmioty p, rozklady r where p.nr_przedm=r.nr_przedm group by nazwa_przedm having count(distinct nr_prac)>=all(select count(distinct nr_prac) from przedmioty p, rozklady r where p.nr_przedm=r.nr_przedm group by nazwa_przedm);
 

 4. Podaj numery i nazwiska pracowników, którzy w temacie DYSK otrzymali wypłatę mniejszą od co najmniej jednej z wypłat pracownika o nazwisku GRZYBEK w dowolnym temacie.
 

 select p.nr_prac, nazwisko from pracownicy p, tematy t, wyplaty w where p.nr_prac=w.nr_prac and w.nr_tem=t.nr_tem and temat="DYSK" and kwota<any(select kwota from pracownicy p, wyplaty w where p.nr_prac=w.nr_prac and nazwisko="GRZYBEK");
 

 5. Podaj numery, nazwiska i daty urodzenia mężczyzn zatrudnionych w zespole OPROGRAMOWANIE, którzy są młodsi od każdego pracownika zespołu BUDOWA.
 

 select nr_prac, nazwisko, data_ur from pracownicy p, zespoly z where p.nr_zesp=z.nr_zesp and plec='M' and nazwa_zesp='OPROGRAMOWANIE' and data_ur>all(select data_ur from pracownicy p, zespoly z where p.nr_zesp=z.nr_zesp and nazwa_zesp='BUDOWA');
 

 6. Podaj nazwiska najstarszych studentów na poszczególnych kierunkach.
 

 select nazwisko from studenci s, kierunki k where s.nr_kier=k.nr_kier and data_ur=(select min(data_ur) from studenci s2 where s2.nr_kier=k.nr_kier );
 

 7. Podaj nazwy zespołów, w których nie pracuje żadna kobieta.
 

 select nazwa_zesp from zespoly z where nr_zesp not in (select distinct nr_zesp from pracownicy p where p.plec='K');
 

 8. Zestawienie zespołów z liczbą pracowników o postaci:
 Nrz        nazwa_zespołu        liczebność  
 W zestawieniu powinny znaleźć się również zespoły z liczebnością zerową.
 

 select nr_zesp as 'Nrz', nazwa_zesp as 'nazwa_zespołu', (select count(*) from pracownicy p where p.nr_zesp=z.nr_zesp) as 'liczebność' from zespoly z;
 9. Utworzyć perspektywę zawierającą wyszczególnione informacje, oraz określić, czy można aktualizować dane w tej perspektywie. Jeżeli nie można - podać wszystkie tego przyczyny.
 Po pomyślnym wykonaniu zadania należy usunąć utworzoną przez siebie perspektywę.
 

 Zestawienie pracowników mających wypłaty w poszczególnych tematach w postaci:  
 nr_tem    nazwa_tematu    nr_prac    nazwisko  
 Rekordy nie powinny powtarzać się nawet w sytuacji, gdy pracownik uzyskał wielokrotnie dochód w tym samym temacie.
 

 create view zad9_michalik as(select distinct t.nr_tem, temat as 'nazwa_tematu', p.nr_prac, nazwisko from pracownicy p, tematy t, wyplaty w where p.nr_prac=w.nr_prac and w.nr_tem=t.nr_tem);
 

 10. 1.Zrealizować zestawienie średnich, minimalnych i maksymalnych zarobków pracowników w poszczególnych zespołach.
 Uwaga!
 Zestawienie zrealizować w dwóch krokach:  
 w pierwszym utworzyć perspektywę (widok) o postaci:  
 nrz    nazwa_zesp        nr_prac    nazwisko    suma_zarobków_prac
 uwzględnić również fakt, że pracownik mógł nie dostać żadnej wypłaty,
 utworzoną perspektywę wykorzystać w zadaniu.
 

 create view zad10_michalik as  
 (select z.nr_zesp as nrz, nazwa_zesp, p.nr_prac, nazwisko, sum(kwota) as suma  
 from (zespoly z join pracownicy p on p.nr_zesp=z.nr_zesp) left outer join wyplaty w on w.nr_prac=p.nr_prac group by nrz, nazwa_zesp, p.nr_prac, nazwisko);
 

 select nazwa_zesp, avg(suma), max(suma), min(suma) from zad10_michalik group by nazwa_zesp;
 

 11. Podaj nazwiska pracowników, którzy zostali przydzieleni do tematu, lecz nie otrzymali w tym temacie ani jednej wypłaty.
 

 select distinct nazwisko from (pracownicy p join przydzialy pd on p.nr_prac=pd.nr_prac) left outer join wyplaty w on p.nr_prac=w.nr_prac where kwota is null;
 

 

 12. Sprawdzić poprawność przydziału kierowników do tematu (jest to niezależnie określone za pomocą klucza obcego nr_prac_kt w tabeli TEMATY oraz przez zapis w tabeli PRZYDZIAŁY – należy sprawdzić czy oba te zapisy sobie odpowiadają).
 

 select * from tematy t left outer join przydzialy pd on t.nr_tem=pd.nr_tem and pd.nr_prac=t.nr_prac_kt and (kod_funkcji is null or kod_funkcji not like 'KRW')
 

 13. Podaj numery i nazwiska pracowników nie biorących udziału w żadnym z tematów, w którym pracuje pracownik NIEZALEZNY.
 

 select distinct p0.nr_prac, p0.nazwisko from pracownicy p0 where p0.nr_prac not in (select p1.nr_prac from pracownicy p1, przydzialy pd1 where pd1.nr_prac=p1.nr_prac and pd1.nr_tem in (select t0.nr_tem from pracownicy p2, przydzialy pd2, tematy t0 where pd2.nr_prac=p2.nr_prac and pd2.nr_tem=t0.nr_tem and p2.nazwisko="NIEZALEZNY"));  
 

 

 14. Podaj nazwiska pracowników którzy realizowali wszystkie tematy, których kierownikiem jest JASKOLA.
 

 select p.nazwisko from pracownicy p where p.nr_prac not in (select p1.nr_prac from pracownicy p1, przydzialy pd1 where p1.nr_prac=pd1.nr_prac and pd1.nr_tem not in (select t2.nr_tem from pracownicy p2 join tematy t2 on p2.nr_prac=t2.nr_prac_kt where p2.nazwisko='JASKOLA'))
zestaw b z 2 gdzieś zapodziałem
 
Do góry Bottom