1

Temat: Zapytanie - sql postgres

treść zapytania

a. Wybierz wykładowców, którzy są zatrudnieni na wydziale o podanej nazwie.
b. Wybierz numery indeksów studentów (bez powtórzeń) uczestniczących w kursach prowadzonych przez wykładowcę o podanym numerze PESEL.

    5 zapytań, w których występują złączenia wewnętrzne
    2 przykładowe zapytania wykorzystujące iloczyn kartezjański (CROSS JOIN)


Jak wygląda składnia tych poleceń zapytań?

baza danych 

create table uczelnia(
id bigserial,
nazwa varchar(256) unique,
adres varchar(512),
wydział varchar(256),
szkoła bigint references uczelnia(id) on delete cascade,
primary key(id)
);

insert into uczelnia(nazwa, adres) values('SAN', 'Zduńska Wola, ul. Wileńska 3');
insert into uczelnia(nazwa, adres) values('WSInf', 'Łódź, ul. Rzgowska 17a');
insert into uczelnia(wydział, szkoła) values('Sieci komputerowe', (select id from uczelnia where nazwa = 'SAN'));
insert into uczelnia(wydział, szkoła) values('Grafika komputerowa', (select id from uczelnia where nazwa = 'WSInf'));

create table wykładowca(
id bigserial,
imię varchar(64),
nazwisko varchar(128),
pesel bigint not null unique,
wydział bigint not null references uczelnia(id),
primary key(id)
);

insert into wykładowca(imię, nazwisko, pesel, wydział) values('Piotr', 'Iksiński', 60071423994, (select id from uczelnia where wydział = 'Sieci komputerowe'));
insert into wykładowca(imię, nazwisko, pesel, wydział) values('Marta', 'Lubelska', 83121822367, (select id from uczelnia where wydział = 'Sieci komputerowe'));
insert into wykładowca(imię, nazwisko, pesel, wydział) values('Magdalena', 'Igrekowska', 63120538841, (select id from uczelnia where wydział = 'Grafika komputerowa'));
insert into wykładowca(imię, nazwisko, pesel, wydział) values('Tomasz', 'Kaczmarek', 57012364837, (select id from uczelnia where wydział = 'Grafika komputerowa'));

create table przedmiot(
id bigserial,
nazwa varchar(256) not null,
wydział bigint not null references uczelnia(id),
primary key(id)
);

insert into przedmiot(nazwa, wydział) values('Adresowanie IP', (select id from uczelnia where wydział = 'Sieci komputerowe'));
insert into przedmiot(nazwa, wydział) values('Modelowanie 3D', (select id from uczelnia where wydział = 'Grafika komputerowa'));

create table student(
id bigserial,
imię varchar(64),
nazwisko varchar(128),
pesel bigint not null unique,
nr_indeksu integer not null,
przedmiot bigint not null references przedmiot(id),
primary key(id)
);

insert into student(imię, nazwisko, pesel, nr_indeksu, przedmiot) values('Krzysztof', 'Kwiatkowski', 90052889130, 58821, (select id from przedmiot where nazwa = 'Adresowanie IP'));
insert into student(imię, nazwisko, pesel, nr_indeksu, przedmiot) values('Julita', 'Fikus', 88072411128, 57631, (select id from przedmiot where nazwa = 'Adresowanie IP'));
insert into student(imię, nazwisko, pesel, nr_indeksu, przedmiot) values ('Agnieszka', 'Jurecka', 91101107188, 96244, (select id from przedmiot where nazwa = 'Modelowanie 3D'));
insert into student(imię, nazwisko, pesel, nr_indeksu, przedmiot) values ('Kamil', 'Lotyk', 83062764553, 97345, (select id from przedmiot where nazwa = 'Modelowanie 3D'));

create table udział_studenta(
id bigserial,
obecność integer,
aktywność integer,
ocena integer,
student bigint not null references student(id) on delete cascade,
primary key(id)
);

insert into udział_studenta(obecność, aktywność, ocena, student) values(3, 5, 4, (select id from student where nr_indeksu = 58821));
insert into udział_studenta(obecność, aktywność, ocena, student) values(8, 4, 5, (select id from student where nr_indeksu = 57631));
insert into udział_studenta(obecność, aktywność, ocena, student) values(7, 3, 5, (select id from student where nr_indeksu = 96244));
insert into udział_studenta(obecność, aktywność, ocena, student) values(5, 2, 3, (select id from student where nr_indeksu = 97345));

2

Odp: Zapytanie - sql postgres