-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtmp.sql
185 lines (160 loc) · 3.39 KB
/
tmp.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
CREATE DATABASE BANXANG
USE BANXANG
-- Câu 1.
CREATE TABLE DNNK
(
MADN char(5) NOT NULL,
TENDN varchar(50),
NGAYTL smalldatetime,
DIACHI varchar(50),
SODT varchar(15),
LOAIDN varchar(20),
)
CREATE TABLE LOAIXANG
(
MALX char(5) NOT NULL,
TENLX varchar(25),
MDBQ varchar(2),
)
CREATE TABLE XANGDAU
(
MAXD char(5) NOT NULL,
TENXD char(40),
MADN char(5) NOT NULL,
MALX char(5) NOT NULL,
GIACOSO money,
THUEPHI int,
)
CREATE TABLE CUAHANG
(
MACH char(5) NOT NULL,
TENCH varchar(40),
BACCL char(2),
RONGDD numeric,
CAOTB numeric,
CAOMC numeric,
)
CREATE TABLE NHAP
(
MACH char(5) NOT NULL,
MAXD char(5) NOT NULL,
NGAYNHAP smalldatetime NOT NULL,
SOLUONG numeric,
GIANHAP money,
)
ALTER TABLE DNNK
ADD CONSTRAINT PK_DNNK
PRIMARY KEY (MADN)
ALTER TABLE LOAIXANG
ADD CONSTRAINT PK_LOAIXANG
PRIMARY KEY (MALX)
ALTER TABLE XANGDAU
ADD CONSTRAINT PK_XANGDAU
PRIMARY KEY (MAXD)
ALTER TABLE XANGDAU
ADD CONSTRAINT FK_MADN
FOREIGN KEY (MADN) REFERENCES DNNK(MADN)
ALTER TABLE XANGDAU
ADD CONSTRAINT FK_MALX
FOREIGN KEY (MALX) REFERENCES LOAIXANG(MALX)
ALTER TABLE CUAHANG
ADD CONSTRAINT PK_CUAHANG
PRIMARY KEY (MACH)
ALTER TABLE NHAP
ADD CONSTRAINT PK_NHAP
PRIMARY KEY (MACH, MAXD, NGAYNHAP)
ALTER TABLE NHAP
ADD CONSTRAINT FK_MACH
FOREIGN KEY (MACH) REFERENCES CUAHANG(MACH)
ALTER TABLE NHAP
ADD CONSTRAINT FK_MAXD
FOREIGN KEY (MAXD) REFERENCES XANGDAU(MAXD)
GO
CREATE TRIGGER CHK_NGAYNHAP
ON NHAP
FOR INSERT, UPDATE
AS
BEGIN
IF EXISTS
(
SELECT *
FROM inserted
INNER JOIN XANGDAU xd
ON inserted.MAXD = xd.MAXD
INNER JOIN DNNK dnnk
ON xd.MADN = dnnk.MADN
WHERE (inserted.NGAYNHAP < dnnk.NGAYTL)
)
BEGIN
PRINT 'Ngay nhap xang dau phai lon hon ngay thanh lap doanh nghiep xuat khau!'
ROLLBACK TRANSACTION
END
END
GO
CREATE TRIGGER CHK_NGAYTL
ON DNNK
FOR INSERT, UPDATE
AS
BEGIN
IF EXISTS
(
SELECT *
FROM inserted
INNER JOIN XANGDAU xd
ON xd.MADN = inserted.MADN
INNER JOIN NHAP nhap
ON xd.MAXD = nhap.MAXD
WHERE (inserted.NGAYTL > nhap.NGAYNHAP)
)
BEGIN
PRINT 'Ngay thanh lap doanh nghiep xuat khau phai nho hon ngay nhap xang dau!'
ROLLBACK TRANSACTION
END
END
SELECT cuahang.MACH, xangdau.MAXD
FROM CUAHANG cuahang
INNER JOIN NHAP nhap
ON cuahang.MACH = nhap.MACH
INNER JOIN XANGDAU xangdau
ON nhap.MAXD = xangdau.MAXD
WHERE
YEAR(nhap.NGAYNHAP) = 2021
AND MONTH(nhap.NGAYNHAP) = 10
AND nhap.SOLUONG > 1000
SELECT dnnk.MADN, dnnk.TENDN
FROM XANGDAU xangdau
INNER JOIN NHAP nhap
ON xangdau.MAXD = nhap.MAXD
INNER JOIN DNNK DNNK
ON dnnk.MADN = xangdau.MADN
INNER JOIN LOAIXANG loaixang
ON xangdau.MALX = loaixang.MALX
WHERE
xangdau.THUEPHI > 1
AND loaixang.TENLX = 'Xăng không chì E5'
-- Câu 3.c.
SELECT loaixang.MALX, ISNULL(loaixang.TENLX, '')
FROM LOAIXANG loaixang
INNER JOIN XANGDAU xangdau
ON loaixang.MALX = xangdau.MALX
WHERE
loaixang.MDBQ = 'V'
SELECT cuahang.MACH, cuahang.TENCH
FROM XANGDAU xangdau
INNER JOIN NHAP nhap
ON xangdau.MAXD = nhap.MAXD
INNER JOIN DNNK DNNK
ON dnnk.MADN = xangdau.MADN
INNER JOIN LOAIXANG loaixang
ON xangdau.MALX = loaixang.MALX
INNER JOIN CUAHANG cuahang
ON cuahang.MACH = nhap.MACH
WHERE
NOT (xangdau.TENXD = 'Xăng không chì R95' AND nhap.NGAYNHAP = '09/10/2022')
-- Câu 3.e.
SELECT cuahang.MACH, cuahang.TENCH, COUNT(*) AS SOLANHAP2022
FROM NHAP nhap
INNER JOIN CUAHANG cuahang
ON cuahang.MACH = nhap.MACH
WHERE YEAR(nhap.NGAYNHAP) = 2022
GROUP BY cuahang.MACH, cuahang.TENCH