· 6 years ago · Jun 03, 2019, 08:50 PM
1DROP TABLE IF EXISTS R1;
2DROP TABLE IF EXISTS R2;
3DROP TABLE IF EXISTS R3;
4drop view if exists v1;
5drop view if exists v2;
6
7CREATE TABLE R1(
8 Шифр text,
9 Наименование text,
10 Материал text,
11 Производитель text);
12CREATE TABLE R2(
13 Номер_поставки integer,
14 Шифр text,
15 Количество integer,
16 Поставщик text,
17 Заказчик text);
18CREATE TABLE R3(
19 Фирма text,
20 Страна text);
21
22insert into R1 values ('ААА', 'Брус', 'Сосна', 'Петрович');
23insert into R1 values ('ААБ', 'Доска', 'Ольха', 'Петрович');
24insert into R1 values ('ААВ', 'Гвозди', 'Сталь', 'Славянка');
25insert into R1 values ('БББ', 'Шурупы', 'Железо', 'Славянка');
26insert into R1 values ('ВВВ', 'Вагонка', 'Ель', 'Славянка');
27insert into R1 values ('ХУЙ', 'Петя', 'Жопа', 'ПИЗДА');
28
29insert into R2 values ('1', 'ААА', '10', 'Петрович', 'Икеа');
30insert into R2 values ('2', 'ААБ', '10', 'Петрович', 'Метрострой');
31insert into R2 values ('3', 'ААВ', '10', 'Славянка', 'Краута');
32insert into R2 values ('4', 'БББ', '110', 'Славянка', 'Краута');
33insert into R2 values ('5', 'ВВВ', '11', 'Саня', 'Лента');
34insert into R2 values ('6', 'ХУЙ', '228', 'ПИДАРАС(САНЯ)', 'Лента');
35
36insert into R3 values ('Петрович', 'Россия');
37insert into R3 values ('Икеа', 'Швеция');
38insert into R3 values ('Метрострой', 'Россия');
39insert into R3 values ('Краута', 'Норвегия');
40insert into R3 values ('Саня', 'Россия');
41insert into R3 values ('Славянка', 'AMERICA');
42insert into R3 values ('Лента', 'Россия');
43insert into R3 values ('ПИЗДА', 'Россия');
44
45--1. Изделия, которые производятся только на экспорт (т.е. заказчик в другой стране)
46create view view1 as
47Select Шифр
48From R1 inner join R3 as kek on R1.Производитель = kek.Фирма
49where Шифр in ( Select R2.Шифр
50 From R2 cross join R3 on R2.Заказчик = R3.Фирма --cross join R1 on R2.Шифр = R1.Шифр
51 where kek.Страна <> Страна)
52;
53
54--2. Производителей, которые не выпускают товаров на экспорт
55create view view2 as
56
57select Производитель
58from R1
59where not exists (Select Производитель
60From R1 inner join R3 as kek on R1.Производитель = kek.Фирма
61where Шифр in ( Select R2.Шифр
62 From R2 cross join R3 on R2.Заказчик = R3.Фирма --cross join R1 on R2.Шифр = R1.Шифр
63 where kek.Страна <> Страна
64 group by R2.Шифр
65 having count(distinct Страна) != 1))
66;
67
68--3. Изделия, которые используются как внутри страны, так и идут на экспорт
69Create view view3 as
70Select Шифр
71From R1 inner join R3 as kek on R1.Производитель = kek.Фирма
72where Шифр not in ( Select R2.Шифр
73 From R2 cross join R3 on R2.Заказчик = R3.Фирма --cross join R1 on R2.Шифр = R1.Шифр
74 where kek.Страна <> Страна)
75
76
77
78
79
80Select R1.Шифр
81From R1 inner join R2 inner join R3
82 ON (R1.Шифр = R2.Шифр and R2.Заказчик = R3.Страна)
83Where Производитель = Страна and Производитель in (Select R1.Производитель
84 From R1 inner join R2 inner join R3
85 ON (R1.Шифр = R2.Шифр and R2.Заказчик = R3.Страна)
86 Where Производитель != Страна)
87;
88
89--4. Материалы,которые используются в изделиях, которые идут на экспорт
90Create view view4 as
91Select distinct R1.Материал
92From R1 inner join R2 inner join R3
93 ON (R1.Шифр = R2.Шифр and R2.Заказчик = R3.Страна)
94Where Производитель != Страна;
95
96--5. Поставщиков, которые работают только с одним заказчиком
97Create view view5 as
98Select Поставщик
99From R1 inner join R2 inner join R3
100 ON (R1.Шифр = R2.Шифр and R2.Заказчик = R3.Страна)
101Group by Поставщик
102Having count(Заказчик) = 1