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

Odpowiedz Nowy wątek
2018-02-06 11:26
BETTERq
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

edytowany 1x, ostatnio: furious programming, 2018-02-08 02:00

Pozostało 580 znaków

2018-02-06 12:15
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:

  1. Zacznij od tabeli oceny i do niej dołączaj pozostałe
  2. wygląda ok ale trzeba by sprawdzić na konkretnych przykładach
  3. Zacznij od tabeli oceny, pogrupuj w having zawrzyj oba warunki na ilość i średnią, następnie złącz z tabelą studentów
  4. Poczytaj o outer join ewentualnie not exists
  5. 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

edytowany 2x, ostatnio: woolfik, 2018-02-06 12:18

Pozostało 580 znaków

2018-02-06 12:20
BETTERq
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ź :)

Pozostało 580 znaków

2018-02-06 12:22
1

No to skoro oracle to proponuję to:
oracle joins

Pozostało 580 znaków

2018-02-06 13:04
Trzeźwy Pomidor
1

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

Pozostało 580 znaków

2018-02-06 13:07
BETTERq
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.

edytowany 1x, ostatnio: furious programming, 2018-02-08 02:01

Pozostało 580 znaków

2018-02-06 13:14
BETTERq
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);
edytowany 1x, ostatnio: furious programming, 2018-02-08 02:03
SQLFiddle.com zamknęli? Za co? - Marcin.Miga 2018-02-06 13:44

Pozostało 580 znaków

2018-02-06 13:18
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ł :)

Pozostało 580 znaków

2018-02-06 13:27
BETTERq
1

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

Pozostało 580 znaków

2018-02-06 13:33
BETTERq
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

Pozostało 580 znaków

2018-02-06 13:37
BETTERq
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

No skoro zwraca to co potrzebujesz to tak :) chociaż wydaje mi się, że dałoby się to tylko raz spiąć z tabelą ocen nie mniej jednak nie chce mi się sprawdzać :D - woolfik 2018-02-06 15:09

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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