· 7 years ago · Feb 18, 2019, 10:08 AM
1drop database if exists dane_db;
2create database if not exists dane_db;
3use dane_db;
4
5create table pracownicy(
6id integer not null primary key,
7imie varchar(32) not null,
8nazwisko varchar(32) not null
9);
10
11create table zadania(
12idZadania bigint not null primary key,
13czasRozpoczecia datetime not null,
14czasZakonczenia datetime not null,
15ktoZlecilId integer not null,
16ktoRozpoczalId integer,
17ktoWykonalId integer,
18ktoSprawdzilId integer,
19ktoZakonczylId integer
20);
21
22create table stanowiska(
23id smallint not null primary key,
24nazwa varchar(32) not null
25);
26
27create table gniazdoProdukcyjne(
28id smallint not null primary key,
29nazwa varchar(32) not null
30);
31
32create table uprawnienia(
33id smallint not null primary key,
34nazwa varchar(32) not null
35);
36
37create table pracownikStanowisko(
38pracownikId smallint not null primary key,
39stanowiskoId smallint not null
40);
41
42create table pracownikGniazdoProdukcyjne(
43pracownikId smallint not null primary key,
44gniazdoProdukcyjneId smallint not null
45);
46
47create table pracownikUprawnienia(
48pracownikId smallint not null primary key,
49uprawnieniaId smallint not null
50);
51
52insert into stanowiska values (1, 'Frezer');
53insert into stanowiska values (2, 'Szlifier');
54insert into stanowiska values (3, 'Tokarz');
55
56insert into gniazdoProdukcyjne values (1, 'Frezarka FF-01');
57insert into gniazdoProdukcyjne values (2, 'Szlifierka TF-01');
58insert into gniazdoProdukcyjne values (3, 'Tokarka TK-1');
59insert into gniazdoProdukcyjne values (4, 'Frezarka FT-21');
60
61insert into uprawnienia values (2, 'do 1kV');
62insert into uprawnienia values (3, 'wysokich napiec do 500kV');
63insert into uprawnienia values (4, 'Pierwsza pomoc');
64
65insert into pracownicy values (1, 'Jan', 'Jankowski');
66insert into pracownicy values (2, 'Adam', 'Adamski');
67insert into pracownicy values (3, 'Marcin', 'Marcinski');
68insert into pracownicy values (4, 'Dorota', 'Dorotowska');
69insert into pracownicy values (5, 'Karolina', 'Karolewska');
70
71
72insert into zadania values (1, '2019-01-01 08:00:00', '2019-01-01 10:00:00', 1, 1, 1, 1, 1);
73insert into zadania values (2, '2019-01-02 08:00:00', '2019-01-02 10:00:00', 1, 2, 3, 4, 5);
74insert into zadania values (3, '2019-01-03 08:00:00', '2019-01-03 10:00:00', 1, 2, 4, 4, 1);
75
76select z.* from zadania as z order by z.idZadania asc;
77
78select z.*, concat(zl.nazwisko, ' ', zl.imie) as zlecil, concat(zl.nazwisko, ' ', zl.imie) as rozpoczal, concat(w.nazwisko, ' ', w.imie) as wykonal, concat(s.nazwisko, ' ', s.imie) as sprawdzil, concat(za.nazwisko, ' ', za.imie) as zakonczyl from zadania as z
79inner join pracownicy as zl on zl.id = z.ktoZlecilId
80left outer join pracownicy as r on r.id = z.ktoRozpoczalId
81left outer join pracownicy as w on w.id = z.ktoWykonalId
82left outer join pracownicy as s on s.id = z.ktoSprawdzilId
83left outer join pracownicy as za on za.id = z.ktoZakonczylId
84order by z.idZadania asc;
85
86create view statusProdukcji as select z.*, concat(zl.nazwisko, ' ', zl.imie) as zlecil, concat(zl.nazwisko, ' ', zl.imie) as rozpoczal, concat(w.nazwisko, ' ', w.imie) as wykonal, concat(s.nazwisko, ' ', s.imie) as sprawdzil, concat(za.nazwisko, ' ', za.imie) as zakonczyl from zadania as z
87inner join pracownicy as zl on zl.id = z.ktoZlecilId
88left outer join pracownicy as r on r.id = z.ktoRozpoczalId
89left outer join pracownicy as w on w.id = z.ktoWykonalId
90left outer join pracownicy as s on s.id = z.ktoSprawdzilId
91left outer join pracownicy as za on za.id = z.ktoZakonczylId
92order by z.idZadania asc;
93
94select * from statusProdukcji;
95
96create or replace view statusProdukcjiLite as select idZadania as kod, czasRozpoczecia as 'start', czasZakonczenia as 'stop', zlecil, rozpoczal, wykonal, sprawdzil, zakonczyl from statusProdukcji order by idZadania asc;
97
98select * from statusProdukcjiLite;
99
100-- update statusProdukcjiLite set zlecil = 'abc';
101
102drop view statusProdukcjiLite;
103drop view statusProdukcji;
104
105select p.*, (select count(*) from pracownikStanowisko as pc where pc.pracownikId = p.id) as ileStanowisk,
106(select count(*) from pracownikGniazdoProdukcyjne as pgp where pgp.pracownikId = p.id) as ileGniazdProdukcyjnych,
107(select count(*) from pracownikUprawnienia as pu where pu.pracownikId = p.id) as ileUprawnien
108from pracownicy as p;