-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathviews8.sql
229 lines (193 loc) · 4.9 KB
/
views8.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
-- вывести одежду и обувь
CREATE OR REPLACE VIEW Fashion AS
SELECT
p.idProducts,
p.ProductName,
p.ForSize,
cl.ClothesType AS FashionType,
pl.price,
pl.Status
FROM Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
JOIN Clothes cl ON p.idProducts = cl.idProduct
UNION
SELECT
p.idProducts,
p.ProductName,
p.ForSize,
b.BootsType AS FashionType,
pl.price,
pl.Status
FROM Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
JOIN Boots b ON p.idProducts = b.idProduct;
-- здоровье
CREATE OR REPLACE VIEW Health AS
SELECT
p.idProducts,
p.ProductName,
p.ForSize,
d.DrugType AS HType,
pl.price,
pl.Status
FROM Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
JOIN Drugs d ON p.idProducts = d.idProduct
UNION
SELECT
p.idProducts,
p.ProductName,
p.ForSize,
v.VitaminType AS HType,
pl.price,
pl.Status
FROM Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
JOIN Vitamins v ON p.idProducts = v.idProduct;
-- вывод всех товаров
CREATE OR REPLACE VIEW isHereforManager AS
SELECT
p.idProducts,
p.ProductName,
pl.Price,
pl.Status,
CASE
WHEN d.idDrugs IS NOT NULL THEN d.DrugType
WHEN c.idCosmetics IS NOT NULL THEN c.CosmeticType
WHEN v.idVitamins IS NOT NULL THEN 'витаминка ' || v.VitaminType
WHEN g.idGroomThings IS NOT NULL THEN g.GroomThingType
WHEN cl.idClothes IS NOT NULL THEN 'одежда для времени года ' || cl.ClothesType
WHEN b.idBoots IS NOT NULL THEN 'обувь для времени года ' || b.BootsType
WHEN col.idCollars IS NOT NULL THEN 'ошейник'
WHEN h.idHarness IS NOT NULL THEN 'шлейка'
WHEN t.idToys IS NOT NULL THEN 'игрушка'
WHEN bow.idBowl IS NOT NULL THEN 'миска'
ELSE 'неизвестно'
END AS ProductType
FROM Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
LEFT JOIN Drugs d ON p.idProducts = d.idProduct
LEFT JOIN Cosmetics c ON p.idProducts = c.idProduct
LEFT JOIN Vitamins v ON p.idProducts = v.idProduct
LEFT JOIN GroomThings g ON p.idProducts = g.idProduct
LEFT JOIN Clothes cl ON p.idProducts = cl.idProduct
LEFT JOIN Boots b ON p.idProducts = b.idProduct
LEFT JOIN Collars col ON p.idProducts = col.idProduct
LEFT JOIN Harness h ON p.idProducts = h.idProduct
LEFT JOIN Toys t ON p.idProducts Products List;
CREATE OR REPLACE VIEW isHereforUser AS
SELECT *
FROM isHereforManager
WHERE Status = 'В наличии';
CREATE VIEW ProductsWithVitamins AS
SELECT
p.ProductName,
p.ForSize,
p.Color,
p.Material,
v.VitaminType
FROM
Products p
JOIN
Vitamins v ON p.idProducts = v.idProduct;
CREATE VIEW showBasket AS
SELECT
bas.idBasket,
p.ProductName,
pl.price
FROM BASKET bas
JOIN PriceList pl ON bas.idProduct=pl.idProducts
JOIN Products p ON bas.idProduct=p.idProducts;
CREATE OR REPLACE VIEW Fashion AS
SELECT
p.idProducts,
p.ProductName,
p.ForSize,
cl.ClothesType AS FashionType,
pl.price,
pl.Status
FROM Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
JOIN Clothes cl ON p.idProducts = cl.idProduct
dogshop=# CREATE VIEW ProductsWithCosmetics AS
SELECT
p.idProducts,
p.ProductName,
p.ForSize,
p.Color,
p.Material,
c.CosmeticType,
pl.price
FROM
Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
RIGHT JOIN Cosmetics c ON p.idProducts = c.idProduct
WHERE
pl.Status = 'В наличии';
CREATE VIEW ProductsWithGroomThings AS
SELECT
p.idProducts,
p.ProductName,
p.ForSize,
p.Color,
p.Material,
g.GroomThingType
FROM
Products p
LEFT JOIN
GroomThings g ON p.idProducts = g.idProduct;
CREATE OR REPLACE VIEW Rig AS
SELECT
p.idProducts,
p.ProductName,
p.ForSize,
'Collar' AS HType,
pl.price,
pl.Status
FROM
Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
JOIN Collars c ON p.idProducts = c.idProduct
WHERE
pl.Status = 'В наличии'
UNION
SELECT
p.idProducts,
p.ProductName,
p.ForSize,
'Harness' AS HType,
h.HarnessType AS SubType,
pl.price,
pl.Status
FROM
Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
JOIN Harness h ON p.idProducts = h.idProduct
WHERE
pl.Status = 'В наличии';
CREATE OR REPLACE VIEW Accesuars AS
SELECT
p.idProducts,
p.ProductName,
'Toy' AS HType,
t.ToyType AS SubType,
pl.price
FROM
Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
JOIN Toys t ON p.idProducts = t.idProduct
WHERE
pl.Status = 'В наличии'
UNION
SELECT
p.idProducts,
p.ProductName,
'Bowl' AS HType,
b.BowlPattern AS SubType,
pl.price
FROM
Products p
JOIN PriceList pl ON p.idProducts = pl.idProducts
JOIN Bowl b ON p.idProducts = b.idProduct
WHERE
pl.Status = 'В наличии';