· 7 years ago · Jan 18, 2019, 08:38 AM
1drop database if exists ti3_metro;
2create database if not exists ti3_metro;
3use ti3_metro;
4
5create table operator(
6id smallint not null primary key,
7nazwa varchar(32) not null
8);
9
10create table linia_metra(
11id smallint not null primary key,
12nazwa varchar(32) not null,
13operatorId smallint not null);
14
15create table stacja(
16id smallint not null primary key,
17nazwa varchar(32) not null,
18liniaMetraId smallint not null,
19isActive char(1) not null default '1',
20passThrough char(1) not null default '0');
21
22create table stacje_relacje(
23id smallint not null primary key,
24aktStacjaId smallint not null,
25docelStacjaId smallint not null,
26czasPrzejazdu smallint not null,
27dystans integer not null);
28
29alter table linia_metra add constraint foreign key fk_operatorId(operatorId) references operator(id) on update restrict on delete restrict;
30alter table stacja add constraint foreign key fk_liniaMetraId(liniaMetraId) references linia_Metra(id) on update restrict on delete restrict;
31alter table stacje_relacje add constraint foreign key fk_docelStacjaId(docelStacjaId) references stacja(id) on update restrict on delete restrict;
32
33insert into operator values (1, upper('operator 1'));
34
35insert into linia_metra (id, nazwa, operatorId)
36values (1, upper('linia a'), 1);
37insert into linia_metra (id, nazwa, operatorId)
38values (2, upper('linia b'), 1);
39
40insert into stacja (id, nazwa, liniaMetraId, isActive, passThrough)
41values
42(1, upper('a1'), 1, '1', '0'),
43(2, upper('a2'), 1, '1', '0'),
44(3, upper('a3'), 1, '1', '0'),
45(4, upper('a4'), 1, '1', '0'),
46(5, upper('b1'), 2, '1', '0'),
47(6, upper('b2'), 2, '1', '0'),
48(7, upper('b3'), 2, '1', '0');
49
50insert into stacje_relacje (id, aktStacjaId, docelStacjaId, czasPrzejazdu, dystans) values
51(1,1,2,7,7000),
52(2,2,1,7,7000),
53(3,2,3,7,7000),
54(4,2,5,0,7000),
55(5,3,2,7,7000),
56(6,3,4,7,7000),
57(7,4,3,7,7000),
58(8,5,2,0,7000),
59(9,5,6,7,7000),
60(10,6,5,7,7000),
61(11,6,7,7,7000),
62(12,7,6,7,7000);
63
64select s.*, lm. * from stacje as s
65inner join linia_metra as lm on lm.id = s.liniaMetraid
66inner join operator as o on o.id = lm.operatorId
67order by s.id;
68
69select o.nazwa as operatorNazwa, lm.nazwa as liniaMetraNazwa,
70s.nazwa as stacjaNazwa, s.isActive, s.passThrough,
71lm.operatorId, s.liniaMetraId, s.id as stacjaId
72from stacja as s
73inner join linia_metra as lm on ls.id = s.liniaMetraId
74inner join operator as o on o.id = ls.operatorId
75order by o.nazwa asc, lm.nazwa asc, s.id asc;