Problem z zadaniami za zajęcia, proszę o pomoc

1

Witam, piszę do was bo nie mogę znaleźć nic na internecie i w sumie się już praktycznie poddaje. Mam kilka podobno prostych kwerend do napisania, ale jakoś zupełnie mi to nie idzie. Zadania wyglądają następująco:

883f1f9615699.jpg

W linku zdjęcie zadań
Ogólnie coś pobówałem z tym zrobić ale z tego co wiem zadania 2,5,7,8 i 10 mogą mieć błędy. Zwłaszcza zadanie 7, ponieważ ten 2gi select w ogóle nie chce zadziałać, a nie wiem czemu, może ma ktoś jakiś pomysł na to jak to ugryźć.
moje rozwiązania wyglądają następująco:

Zadanie 1

select s.IDSTUDENT,s.NAZWISKO,p.PRZEDMIOT,o.OCENA
from A1_STUDENT s join A1_OCENA o on s.IDSTUDENT = o.IDSTUDENT join A1_PRZEDMIOT p on o.IDPRZEDMIOT = p.IDPRZEDMIOT
where o.OCENA = 2

Zadanie 2

select p.PRZEDMIOT,count(o.OCENA) as "Ilosc ocen z przedmiotu"
from A1_PRZEDMIOT p join A1_OCENA o on o.IDPRZEDMIOT = p.IDPRZEDMIOT
group by p.PRZEDMIOT
having count(o.OCENA) > 0

Zadanie 3

select SEMESTR,count(PRZEDMIOT) as "liczba_przedmiotow"
from A1_PRZEDMIOT
GROUP BY SEMESTR
ORDER BY SEMESTR

Zadanie 4

select p.PRZEDMIOT,avg(o.OCENA) as "srednia"
from A1_PRZEDMIOT p join A1_OCENA o on o.IDPRZEDMIOT = p.IDPRZEDMIOT
where p.SEMESTR = 1
group by p.PRZEDMIOT

Zadanie 5

select count(o.OCENA) as "ilosc_ocen_pozytywnych",s.NAZWISKO
from A1_STUDENT s join A1_OCENA o on s.IDSTUDENT = o.IDSTUDENT
where (o.DATAWYSTAWIENIA > '15/01/01' AND o.DATAWYSTAWIENIA < '15/12/31') AND o.OCENA > 2
group by s.NAZWISKO
having count(o.OCENA) >= 2

Zadanie 6

select Przedmiot, Semestr
from A1_Przedmiot
where Przedmiot like '%baz%'
order by SEMESTR

Zadanie 7

select count(o.Ocena),s.NAZWISKO,(select avg(o.Ocena)
from A1_Student s join A1_Ocena o on s.IdStudent = o.IdStudent 
) as srednia
from A1_Student s join A1_Ocena o on s.IdStudent = o.IdStudent 
group by s.Nazwisko
having count(o.OCENA) >=3

Zadanie 8

select count(o.Ocena),s.NAZWISKO
from A1_Student s join A1_Ocena o on s.IdStudent = o.IdStudent
group by s.Nazwisko
having count(o.OCENA) = 0

Zadanie 9

select s.Nazwisko
from A1_STUDENT s join A1_OCENA o on s.IDSTUDENT = o.IDSTUDENT join A1_PRZEDMIOT p on p.IDPRZEDMIOT = o.IDPRZEDMIOT
where s.akt_semestr<p.semestr AND o.ocena > 2
group by s.NAZWISKO

Zadanie 10

select s.Nazwisko
from A1_STUDENT s join A1_OCENA o on s.IDSTUDENT = o.IDSTUDENT join A1_PRZEDMIOT p on p.IDPRZEDMIOT = o.IDPRZEDMIOT join A1_OCENA o2 on o2.IDSTUDENT=s.IDSTUDENT join A1_PRZEDMIOT p2 on p2.IDPRZEDMIOT=o2.IDPRZEDMIOT
where  (p.Przedmiot ='Matematyka Dyskretna' AND o.OCENA > 2) AND (p2.PRZEDMIOT = 'Algebra liniowa' AND o2.OCENA > 2)
group by s.NAZWISKO

Z góry dzięki za jakąkolwiek pomoc

5

Po pierwsze stosuj formatowanie (będzie się łatwiej czytać). Po drugie jest strona: http://sqlfiddle.com/ gdzie możesz przygotować strukturę oraz uzupełnić ją danymi. Do tego możesz wrzucić swoje zapytania, dzięki czemu łatwiej będzie nam nanieść poprawki, na Twoje zapytania. Widzę, że zadania są stricte studenckie więc gotowca Ci nie dam ale udzielę podpowiedzi:
2. Zacznij od tabeli oceny i do niej dołączaj pozostałe
5. wygląda ok ale trzeba by sprawdzić na konkretnych przykładach
7. Zacznij od tabeli oceny, pogrupuj w having zawrzyj oba warunki na ilość i średnią, następnie złącz z tabelą studentów
8. Poczytaj o outer join ewentualnie not exists
10. Zacznij od przedmiotu i w warunku where daj nazwy przedmiotów, to na dzień dobry zawęzi Ci ilość rekordów, następnie złącz z tabelą ocen i dodaj warunek >= 2, następnie dołącz studenta aby wziąć jego nazwisko.

Zasadniczo widzę, że wszystkie zadania masz zrobione w oparciu o join, a złączeń jest trochę więcej
SQLJoins

1

ja tą baze napisałem już w ORACLE Developerze, więc te kody są testowane przeze mnie :)
zaraz coś pokombinuję z Twoimi wskazówkami, dzięki za odpowiedź :)

1

No to skoro oracle to proponuję to:
oracle joins

1

Podesłał byś kod struktury z danymi, to ogarnę, a jak nie potrzebujesz to ćwiczebnie sobie zrobię

1

Dziękuję bardzo za Twoją pomoc, jest nieoceniona.
Z poprawionych rzeczy co zrobiłem :

Zadanie 2
dodałem po prostu right joina co wyświetliło, które osoby nie mają przypisanego niczego i wyrzuciłem wynik poprzez having count

select p.PRZEDMIOT,count(o.OCENA) as "Ilosc ocen z przedmiotu"
from A1_OCENA o right join A1_PRZEDMIOT p on o.IDPRZEDMIOT = p.IDPRZEDMIOT
group by p.PRZEDMIOT
having count(o.OCENA) > 0`

Zadanie 7
chyba faktycznie chciałem to przekombinować a wystarczyło

select count(o.OCENA),avg(o.OCENA),s.NAZWISKO
from A1_OCENA o join A1_STUDENT s on s.IDSTUDENT=o.IDSTUDENT
group by s.NAZWISKO
having count(o.OCENA) >= 3 and avg(o.OCENA) > 4,5`

Zadanie 8
zwyczajny left join dał rade

select count(o.Ocena),s.NAZWISKO
from A1_Student s left join A1_Ocena o on s.IdStudent = o.IdStudent
group by s.Nazwisko
having count(o.OCENA) = 0`

Zadanie 10
no tu dalej mam problem, bo tescie logicznym gdy daje OR to wybiera albo jedną komórke albo drugą, a przy AND nie wybiera nic, a warunkiem ma być, że zarówno Matematyka Dyskretna I Algebra liniowa muszą być zaliczone czyli ocena większa od 2. A w przypadku OR to wystarczy, że jedno jest spełnione.

1

Tabela A1_OCENA

--------------------------------------------------------
--  File created - wtorek-lutego-06-2018   
--------------------------------------------------------
--------------------------------------------------------
--  DDL for Table A1_OCENA
--------------------------------------------------------

  CREATE TABLE "TESTOWA"."A1_OCENA" 
   (	"IDPRZEDMIOT" NUMBER, 
	"IDSTUDENT" NUMBER, 
	"DATAWYSTAWIENIA" DATE, 
	"OCENA" NUMBER
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS" ;
REM INSERTING into TESTOWA.A1_OCENA
SET DEFINE OFF;
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','6',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','6',to_date('14/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','3',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','3',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','5',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','5',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('10','17',to_date('15/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','16',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','1',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','1',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','15',to_date('15/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','1',to_date('15/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','14',to_date('15/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','18',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','2',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','8',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('2','6',to_date('15/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','7',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('8','2',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','3',to_date('15/09/17','RR/MM/DD'),'3,5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('2','6',to_date('15/09/17','RR/MM/DD'),'4,5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','7',to_date('15/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','9',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','8',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','2',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('2','1',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','11',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','17',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','18',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','17',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('1','2',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('2','15',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','6',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','5',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','8',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','11',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','10',to_date('15/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','7',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('7','4',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('8','3',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','6',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('12','8',to_date('14/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','1',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','2',to_date('14/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','4',to_date('14/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('7','7',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','8',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','9',to_date('14/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','3',to_date('14/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','6',to_date('14/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('2','8',to_date('14/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','4',to_date('14/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','1',to_date('14/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('7','1',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','2',to_date('14/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','3',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','5',to_date('14/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','8',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('7','7',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','4',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','6',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','8',to_date('14/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','9',to_date('14/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','11',to_date('14/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('7','12',to_date('14/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','13',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('2','14',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','15',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','16',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','17',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('8','2',to_date('16/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','1',to_date('16/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','3',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','4',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','8',to_date('16/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','7',to_date('16/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','12',to_date('16/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('7','6',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('8','4',to_date('16/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','9',to_date('16/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','13',to_date('16/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('2','11',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','10',to_date('16/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','10',to_date('16/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','5',to_date('16/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','4',to_date('16/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','8',to_date('16/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('7','9',to_date('16/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('8','7',to_date('16/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','1',to_date('16/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','2',to_date('16/09/17','RR/MM/DD'),'2');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','3',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','4',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','5',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','6',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','8',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('7','7',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('8','9',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('3','10',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('2','11',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('4','12',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','1',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('6','13',to_date('15/09/17','RR/MM/DD'),'3');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('7','14',to_date('15/09/17','RR/MM/DD'),'4');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('8','15',to_date('15/09/17','RR/MM/DD'),'5');
Insert into TESTOWA.A1_OCENA (IDPRZEDMIOT,IDSTUDENT,DATAWYSTAWIENIA,OCENA) values ('5','16',to_date('15/09/17','RR/MM/DD'),'3');
--------------------------------------------------------
--  Constraints for Table A1_OCENA
--------------------------------------------------------

  ALTER TABLE "TESTOWA"."A1_OCENA" MODIFY ("IDPRZEDMIOT" NOT NULL ENABLE);
 
  ALTER TABLE "TESTOWA"."A1_OCENA" MODIFY ("IDSTUDENT" NOT NULL ENABLE);
 
  ALTER TABLE "TESTOWA"."A1_OCENA" MODIFY ("DATAWYSTAWIENIA" NOT NULL ENABLE);

Tabela A1_PRZEDMIOT

--------------------------------------------------------
--  File created - wtorek-lutego-06-2018   
--------------------------------------------------------
--------------------------------------------------------
--  DDL for Table A1_PRZEDMIOT
--------------------------------------------------------

  CREATE TABLE "TESTOWA"."A1_PRZEDMIOT" 
   (	"IDPRZEDMIOT" NUMBER, 
	"PRZEDMIOT" VARCHAR2(30 BYTE), 
	"SYMBOL" VARCHAR2(20 BYTE), 
	"SEMESTR" VARCHAR2(20 BYTE)
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS" ;
REM INSERTING into TESTOWA.A1_PRZEDMIOT
SET DEFINE OFF;
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('1','Bazy danych','L23','1');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('2','Postralacyjne bazy danych','L2156','2');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('3','Technologie baz danych','L20355','2');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('4','Rekacyjne bazy danych','L124232','3');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('5','Matematyka Dyskretna','L3123','1');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('6','Algebra liniowa','L84559','4');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('7','Chemia','L832','5');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('8','Fizyka','L98123','5');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('9','Biologia','L8239','3');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('10','Informatyka','L544423','2');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('11','Finanse','L3234','5');
Insert into TESTOWA.A1_PRZEDMIOT (IDPRZEDMIOT,PRZEDMIOT,SYMBOL,SEMESTR) values ('12','Rachunkowosc','L8577','6');
--------------------------------------------------------
--  DDL for Index A1_PRZEDMIOT_PK
--------------------------------------------------------

  CREATE UNIQUE INDEX "TESTOWA"."A1_PRZEDMIOT_PK" ON "TESTOWA"."A1_PRZEDMIOT" ("IDPRZEDMIOT") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS" ;
--------------------------------------------------------
--  Constraints for Table A1_PRZEDMIOT
--------------------------------------------------------

  ALTER TABLE "TESTOWA"."A1_PRZEDMIOT" ADD CONSTRAINT "A1_PRZEDMIOT_PK" PRIMARY KEY ("IDPRZEDMIOT")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS"  ENABLE;
 
  ALTER TABLE "TESTOWA"."A1_PRZEDMIOT" MODIFY ("IDPRZEDMIOT" NOT NULL ENABLE);

TABELA A1_STUDENT

--------------------------------------------------------
--  File created - wtorek-lutego-06-2018   
--------------------------------------------------------
--------------------------------------------------------
--  DDL for Table A1_STUDENT
--------------------------------------------------------

  CREATE TABLE "TESTOWA"."A1_STUDENT" 
   (	"IDSTUDENT" NUMBER, 
	"NAZWISKO" VARCHAR2(30 BYTE), 
	"IMIE" VARCHAR2(20 BYTE), 
	"DATAUR" DATE, 
	"PLEC" VARCHAR2(20 BYTE), 
	"PESEL" NUMBER, 
	"AKT_SEMESTR" NUMBER
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS" ;
REM INSERTING into TESTOWA.A1_STUDENT
SET DEFINE OFF;
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('21','Witczak','Bartek',to_date('90/07/07','RR/MM/DD'),'mezczyzna','1564896','3');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('1','TESTOWA','Bart',to_date('93/11/24','RR/MM/DD'),'mezczyzna','51684894','2');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('2','Pondel','Maciej',to_date('91/10/20','RR/MM/DD'),'mezczyzna','5561846','3');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('3','Sikorski','Jakub',to_date('95/01/03','RR/MM/DD'),'mezczyzna','56148648','1');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('4','Maciejczyk','Maciej',to_date('92/10/11','RR/MM/DD'),'mezczyzna','1561','2');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('5','Kruk','Oskar',to_date('93/04/06','RR/MM/DD'),'mezczyzna','614213','4');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('6','Kocon','Ola',to_date('92/04/06','RR/MM/DD'),'kobieta','320231564','5');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('7','Klepacki','Jacek',to_date('92/07/13','RR/MM/DD'),'mezczyzna','6556484','3');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('8','Kowalczyk','Tomasz',to_date('93/08/28','RR/MM/DD'),'mezczyzna','5156484','3');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('9','Wronowska','Agata',to_date('97/02/27','RR/MM/DD'),'kobieta','32156184','1');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('10','Kubacki','Tomasz',to_date('89/03/12','RR/MM/DD'),'mezczyzna','3156184','2');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('11','Staniszewski','Pawel',to_date('85/05/01','RR/MM/DD'),'mezczyzna','15618645','2');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('12','Wojtczak','Kamil',to_date('90/09/09','RR/MM/DD'),'mezczyzna','10561564','1');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('13','Urban','Anna',to_date('78/03/21','RR/MM/DD'),'kobieta','516518','3');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('14','Friedel','Maciej',to_date('91/05/30','RR/MM/DD'),'mezczyzna','515618','4');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('15','Klos','Lukasz',to_date('93/11/04','RR/MM/DD'),'mezczyzna','2105618','2');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('16','Jarosz','Natasza',to_date('94/09/20','RR/MM/DD'),'mezczyzna','156168','3');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('17','Zawodny','Agnieszka',to_date('99/01/01','RR/MM/DD'),'kobieta','1618941561','1');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('18','Duda','Andrzej',to_date('91/12/31','RR/MM/DD'),'mezczyzna','1651618','2');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('19','Kowalski','Jan',to_date('95/04/22','RR/MM/DD'),'mezczyzna','1651561','4');
Insert into TESTOWA.A1_STUDENT (IDSTUDENT,NAZWISKO,IMIE,DATAUR,PLEC,PESEL,AKT_SEMESTR) values ('20','Sobota','Marcin',to_date('90/06/07','RR/MM/DD'),'mezczyzna','561864','2');
--------------------------------------------------------
--  DDL for Index A1_STUDENT_PK
--------------------------------------------------------

  CREATE UNIQUE INDEX "TESTOWA"."A1_STUDENT_PK" ON "TESTOWA"."A1_STUDENT" ("IDSTUDENT") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS" ;
--------------------------------------------------------
--  Constraints for Table A1_STUDENT
--------------------------------------------------------

  ALTER TABLE "TESTOWA"."A1_STUDENT" ADD CONSTRAINT "A1_STUDENT_PK" PRIMARY KEY ("IDSTUDENT")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "USERS"  ENABLE;
 
  ALTER TABLE "TESTOWA"."A1_STUDENT" MODIFY ("IDSTUDENT" NOT NULL ENABLE);
2

Wiesz zadanie może być tak sformułowane, że na danym zbiorze nie będzie wyników tzn. żaden student nie zaliczył obu przedmitów.
Ja bym spróbował tak:

select distinct o.idStudent, p.Przedmiot
  from A1_Przedmiot p, A1_Oceny o
 where p.przedmiot in ('Matematyka Dyskretna', 'Algebra liniowa')
   and p.IdPrzedmiot = o.IdPrzedmiot
   and o.ocena > 2 
 order by o.idStudent 

To wyciągnie Ci wszystkie oceny pozytywne dla tych dwóch przedmiotów. Jeśli jakiś student w tym wyniku będzie miał oba przedmioty to znaczy, że dałeś ciała w zapytaniu :) jak nie to znaczy, że nikt nie zaliczył :)

1

Wynikiem tej kweendy jest wyświetlenie albo tego albo tego
screenshot-20180206132739.png

1

W kodzie, który ja napisałem (ten z dużą ilością joinów)

select s.Nazwisko,p.PRZEDMIOT,o.OCENA,p2.PRZEDMIOT,o2.OCENA
from A1_STUDENT s join A1_OCENA o on s.IDSTUDENT = o.IDSTUDENT join A1_PRZEDMIOT p on p.IDPRZEDMIOT = o.IDPRZEDMIOT join A1_OCENA o2 on o2.IDSTUDENT=s.IDSTUDENT join A1_PRZEDMIOT p2 on p2.IDPRZEDMIOT=o2.IDPRZEDMIOT
where  (p.Przedmiot ='Matematyka Dyskretna' AND o.OCENA > 2) AND (p2.PRZEDMIOT = 'Algebra liniowa' AND o2.OCENA > 2)

screenshot-20180206133332.png

1

I po wyciągnieciu tych danych których chce wychodzi

select s.Nazwisko
from A1_STUDENT s join A1_OCENA o on s.IDSTUDENT = o.IDSTUDENT join A1_PRZEDMIOT p on p.IDPRZEDMIOT = o.IDPRZEDMIOT join A1_OCENA o2 on o2.IDSTUDENT=s.IDSTUDENT join A1_PRZEDMIOT p2 on p2.IDPRZEDMIOT=o2.IDPRZEDMIOT
where  (p.Przedmiot ='Matematyka Dyskretna' AND o.OCENA > 2) AND (p2.PRZEDMIOT = 'Algebra liniowa' AND o2.OCENA > 2)
group by s.NAZWISKO

screenshot-20180206133657.png

Kwestia czy samo zapytanie jest dobre

0

Nie miałem wczoraj za dużo czasu i musiałem stworzyć od podstaw bazę
łap rozwiązania 1, 2, 3, 5
co prawda nazewnictwo trochę zmienione ale logika ta sama więc powinny pomóc

zad 1

select s.Imie, s.Nazwisko,o.ocena ,p.przedmiot from student s inner join  ocena o using (id_student) 
inner  join przedmiot p on o.Idprzedmiot= p.Idprzedmiot
where ocena <=4 ;

zad2

select distinct p.Przedmiot   from przedmiot p inner join ocena o using(Idprzedmiot )  

zad 3

select  semestr, count(przedmiot)as liczba_przedmiotów  from przedmiot group by semestr 

zad5

select Imie, nazwisko from student 
where id_student in (select Id_student from ocena
where DataWystawienia >='15/01/01' and DataWystawienia <= '15/12/31') and id_student in (
    select id_student from ocena 
    where ocena >2 and id_student in  ( select id_student from (select   id_student,count(*) from ocena 
    group by Id_student ))
)

Przy okazji powie mi ktoś jaki sens ma primary key na dacie ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1