-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paththietkecosodulieu.sql
259 lines (189 loc) · 4.85 KB
/
thietkecosodulieu.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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
/*
Code by: Nguyễn Ngô Thượng
Last update: 02/12/2022
Mô tả:
Do dữ liệu nhiều nên nhóm import data từ file csv vào để tạo bảng. Rồi sau đó select into ra từng bảng riêng phục vụ cho môn học.
*/
use quanlybanhang_chillax
insert into donhang
(madonhang, nguoimua, trangthaidonhang,lydohuy)
values
('test001', 'nguoimua001', N'Đã hủy', N'không thích')
DELETE DONHANG
WHERE madonhang = 'TEST001'
--xóa bảng đơn hàng
drop table donhang
--tạo bảng đơn hàng
select
madonhang
, nguoimua
, ngaydathang
, trangthaidonhang
, lydohuy
into donhang
from v04
select *
from donhang
--xóa các giá trị trùng lặp
with cte_clean_donhang as (
select *
, RN = row_number() over(PARTITION by madonhang order by madonhang)
from donhang
)
delete cte_clean_donhang
where RN > 1
select *
from donhang
order by nguoimua
--tạo bảng đơn hàng chi tiết
select
madonhang
, skusanpham
, skuphanloaihang
, soluong
into donhangchitiet
from v04
select *
from donhangchitiet
-- tạo bảng người mua
select
nguoimua
, diachinhanhang
, tennguoinhan
, sodienthoai
, gioitinh
into nguoimua
from v04
select *
from nguoimua
--xóa giá trị trừng lặp
with cte_clean_nguoimua as (
select
*
, RN = row_number() over(PARTITION by nguoimua ORDER by nguoimua desc)
from nguoimua
)
delete cte_clean_nguoimua
where RN > 1
select *
from nguoimua
drop table giaohang
--tạo bảng giao hàng
select
madonhang
, thoigianhoanthanhdonhang
, donvivanchuyen
into giaohang
from v04
--xóa mã đơn hàng trùng
with cte_clean_giaohang as (
select *
, RN = row_number() over(PARTITION by madonhang order by madonhang)
from giaohang
)
delete cte_clean_giaohang
where RN > 1
select *
from giaohang
-- tạo bảng sản phẩm chi tiết
select
skusanpham
, skuphanloaihang
, tenphanloaihang
, giaban
into sanphamchitiet
from v04
--tạo bảng sản phẩm (chứa sku sản phẩm và tên sp)
drop table sanpham
select
skusanpham
, tensanpham
into sanpham
from v04
order by skusanpham
select *
from sku_table
select *
from sanpham
--xóa trùng lặp
with cte_clean_sanpham as
(
select *
, RN = ROW_NUMBER() OVER(PARTITION BY skusanpham order by skusanpham)
from sanpham
)
delete cte_clean_sanpham
where rn > 1
--xóa trùng lặp sku phân loại hàng
with
cte_clean_sanphamchitiet
as
(
select *
, RN = ROW_NUMBER() OVER(PARTITION BY skuphanloaihang order by skuphanloaihang)
from sanphamchitiet
)
delete cte_clean_sanphamchitiet
where rn > 1
----
select *
from giaohang
join donhang on giaohang.madonhang = donhang.madonhang
join nguoimua on donhang.nguoimua = nguoimua.nguoimua
join donhangchitiet on donhangchitiet.madonhang = donhang.madonhang
join sanphamchitiet on donhangchitiet.skuphanloaihang = sanphamchitiet.skuphanloaihang
join sanpham on sanpham.skusanpham = sanphamchitiet.skusanpham
order by donhang.madonhang
go
create view view_full_info
as
SELECT
donhang.*
, donhangchitiet.skusanpham
, donhangchitiet.skuphanloaihang
, donhangchitiet.soluong
, sanphamchitiet.giaban
, sanphamchitiet.tenphanloaihang
, sanpham.tensanpham
, giaohang.thoigianhoanthanhdonhang
, giaohang.donvivanchuyen
, nguoimua.diachinhanhang
, nguoimua.sodienthoai
, nguoimua.gioitinh
FROM donhangchitiet
left join sanphamchitiet on donhangchitiet.skuphanloaihang = sanphamchitiet.skuphanloaihang
join sanpham on sanpham.skusanpham = sanphamchitiet.skusanpham
join donhang on donhangchitiet.madonhang = donhang.madonhang
join nguoimua on donhang.nguoimua = nguoimua.nguoimua
join giaohang on donhang.madonhang = giaohang.madonhang
go
select *
from view_full_info
select *
from donhang
select *
from donhang
order by ngaydathang desc
select *
from sanpham
select *
from donhangchitiet
--tạo index cho bảng giao hàng (madonhang) vì mình cần toàn vẹn dữ liệu ko cho trùng lặp
create unique index ind_giaohang on giaohang (madonhang)
select *
from nguoimua
--tạo index cho bảng giao hàng (madonhang) vì mình cần toàn vẹn dữ liệu ko cho trùng lặp
create unique index ind_nguoimua on nguoimua (nguoimua)
go
create trigger tg_ngaydathang
on donhang
for insert
as
declare @madonhang nvarchar(50)
begin
select @madonhang = madonhang
from inserted
update donhang
set ngaydathang = getdate()
where madonhang = @madonhang
end