Advertisement
l3en

Untitled

Nov 21st, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 23.44 KB | None | 0 0
  1. DROP TABLE JobService
  2. DROP TABLE Service
  3. DROP TABLE JobSupply
  4. DROP TABLE Supply
  5. DROP TABLE SupplyCategory
  6. DROP TABLE Job
  7. DROP TABLE Payment
  8. DROP TABLE Client
  9. DROP TABLE StaffTraining
  10. DROP TABLE Training
  11. DROP TABLE Staff
  12. DROP TABLE StaffType
  13.  
  14. CREATE TABLE StaffType
  15. (
  16. StaffTypeCode INT IDENTITY (1,1) NOT NULL
  17. CONSTRAINT pk_StaffType PRIMARY KEY clustered,
  18. Description VARCHAR (100) NOT NULL,
  19. Wage smallmoney NOT NULL
  20. CONSTRAINT ck_Wage CHECK (Wage >=0)
  21. CONSTRAINT df_Wage DEFAULT 20,
  22. )
  23.  
  24. CREATE TABLE Staff
  25. (
  26. StaffID INT NOT NULL
  27. CONSTRAINT pk_Staff PRIMARY KEY clustered,
  28. FirstName VARCHAR (50) NOT NULL,
  29. LastName VARCHAR (50) NOT NULL,
  30. TrainingCredits SMALLINT NOT NULL,
  31. StaffTypeCode INT NOT NULL
  32. CONSTRAINT fk_StaffToStaffType REFERENCES StaffType(StaffTypeCode),
  33. Phone VARCHAR(14) NOT NULL
  34. CONSTRAINT ck_StaffPhone CHECK (Phone LIKE '([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')
  35.  
  36. )
  37.  
  38. CREATE TABLE Training
  39. (
  40. TrainingID VARCHAR(20) NOT NULL
  41. CONSTRAINT pk_Training PRIMARY KEY clustered,
  42. Description VARCHAR(100) NOT NULL,
  43. Credits tinyint NOT NULL
  44. CONSTRAINT ck_Credits CHECK (Credits <=6)
  45. CONSTRAINT df_Credits DEFAULT 3
  46. )
  47.  
  48. CREATE TABLE StaffTraining
  49. (
  50. StaffID INT NOT NULL
  51. CONSTRAINT fk_StaffTrainingToStaff REFERENCES Staff(StaffID),
  52. TrainingID VARCHAR(20) NOT NULL
  53. CONSTRAINT fk_StaffTrainingToTraining REFERENCES Training(TrainingID),
  54. CompletionDate datetime NOT NULL,
  55. CONSTRAINT pk_StaffTraining PRIMARY KEY clustered (StaffID, TrainingID)
  56. )
  57. CREATE TABLE Client
  58. (
  59. ClientID INT IDENTITY (1,1) NOT NULL
  60. CONSTRAINT pk_Client PRIMARY KEY clustered,
  61. FirstName VARCHAR(50) NOT NULL,
  62. LastName VARCHAR(50) NOT NULL,
  63. Phone CHAR (14) NOT NULL
  64. CONSTRAINT ck_Phone CHECK (Phone LIKE '([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'),
  65. Balance money NOT NULL CONSTRAINT df_Balance DEFAULT  0
  66. )
  67.  
  68. CREATE TABLE Job
  69. (
  70. JobNumber INT IDENTITY (1,1) NOT NULL
  71. CONSTRAINT pk_Job PRIMARY KEY clustered,
  72. DATE datetime NOT NULL,
  73. Address VARCHAR(100) NOT NULL,
  74. City VARCHAR (50) NOT NULL,
  75. Province CHAR(2) NOT NULL
  76. CONSTRAINT ck_Province CHECK (Province LIKE '[a-z][a-z]'),
  77. PostalCode CHAR(7) NOT NULL
  78. CONSTRAINT ck_PostalCode CHECK (PostalCode LIKE '[a-z][0-9][a-z] [0-9][a-z][0-9]'),
  79. SubTotal money NOT NULL,
  80. GST money NOT NULL,
  81. Total money NOT NULL,
  82. StaffID INT NOT NULL
  83. CONSTRAINT fk_JobToStaff REFERENCES Staff(StaffID),
  84. ClientID INT NOT NULL
  85. CONSTRAINT fk_JobToClient REFERENCES Client(ClientID),
  86. CONSTRAINT ck_SubTotalandTotal CHECK (Total > Subtotal)
  87. )
  88.  
  89. CREATE TABLE SupplyCategory
  90. (
  91. SupplyCategoryCode VARCHAR (5) NOT NULL
  92. CONSTRAINT pk_SupplyCategory PRIMARY KEY clustered,
  93. Description VARCHAR(100) NOT NULL,
  94. StorageRoom VARCHAR (5) NOT NULL
  95. )
  96.  
  97. CREATE TABLE Supply
  98. (
  99. SupplyCode VARCHAR(8) NOT NULL
  100. CONSTRAINT pk_Supply PRIMARY KEY clustered,
  101. Description VARCHAR(100) NOT NULL,
  102. SupplyCategoryCode VARCHAR(5) NOT NULL
  103. CONSTRAINT fk_SupplyToSupplyCategory REFERENCES SupplyCategory(SupplyCategoryCode)
  104. )
  105.  
  106. CREATE TABLE JobSupply
  107. (
  108. JobNumber INT NOT NULL
  109. CONSTRAINT fk_JobSupplyToJob REFERENCES Job(JobNumber),
  110. SupplyCode VARCHAR(8) NOT NULL
  111. CONSTRAINT fk_JobSupplyToSupply REFERENCES Supply(SupplyCode),
  112. Quantity SMALLINT NOT NULL,
  113. CONSTRAINT pk_JobSupply PRIMARY KEY clustered (JobNumber, SupplyCode)
  114. )
  115.  
  116. CREATE TABLE Service
  117. (
  118. ServiceCode VARCHAR(15) NOT NULL
  119. CONSTRAINT pk_Service PRIMARY KEY clustered,
  120. Description VARCHAR(100) NOT NULL,
  121. CostPerHour smallmoney NOT NULL
  122. )
  123.  
  124. CREATE TABLE JobService
  125. (
  126. JobNumber INT NOT NULL
  127. CONSTRAINT fk_JobServiceToJob REFERENCES Job(JobNumber),
  128. ServiceCode VARCHAR(15) NOT NULL
  129. CONSTRAINT fk_JobServiceToService REFERENCES Service(ServiceCode),
  130. Notes VARCHAR(200) NOT NULL,
  131. hours INT NOT NULL,
  132. ActualCostPerHour smallmoney NOT NULL,
  133. ExtCost smallmoney NOT NULL,
  134. CONSTRAINT pk_JobService PRIMARY KEY clustered (JobNumber, ServiceCode)
  135. )
  136.  
  137. CREATE TABLE Payment
  138. (
  139. PaymentID INT NOT NULL IDENTITY (1,1) CONSTRAINT pk_Payment PRIMARY KEY clustered,
  140. DATE datetime NOT NULL,
  141. Amount smallmoney NOT NULL,
  142. ClientID INT NOT NULL
  143. CONSTRAINT fk_PaymentToClient REFERENCES Client(ClientID)
  144. )
  145.  
  146. ALTER TABLE Client
  147. ADD
  148. Email VARCHAR(100) NULL
  149. CONSTRAINT ck_Email CHECK (Email LIKE '%@%.%')
  150.  
  151. ALTER TABLE Staff
  152. ADD
  153. Available CHAR(1) NOT NULL
  154. CONSTRAINT ck_Available CHECK (Available LIKE '[YN]')
  155. CONSTRAINT df_Available DEFAULT 'Y'
  156.  
  157. ALTER TABLE Job
  158. ADD
  159. CONSTRAINT df_Province DEFAULT 'AB' FOR Province
  160.  
  161. --Non clustered indexes here
  162.  
  163. CREATE nonclustered INDEX IX_StaffTraining_TrainingID
  164. ON StaffTraining (TrainingID)
  165. CREATE nonclustered INDEX IX_StaffTraining_StaffID
  166. ON StaffTraining (StaffID)
  167. CREATE nonclustered INDEX IX_Staff_StaffTypeCode
  168. ON Staff (StaffTypeCode)
  169. CREATE nonclustered INDEX IX_Job_ClientID
  170. ON Job (ClientID)
  171. CREATE nonclustered INDEX IX_Job_StaffID
  172. ON Job (StaffID)
  173. CREATE nonclustered INDEX IX_JobService_JobNumber
  174. ON JobService (JobNumber)
  175. CREATE nonclustered INDEX IX_JobService_ServiceCode
  176. ON JobService (ServiceCode)
  177. CREATE nonclustered INDEX IX_JobSupply_JobNumber
  178. ON Jobsupply (JobNumber)
  179. CREATE nonclustered INDEX IX_JobSupply_SupplyCode
  180. ON JobSupply (SupplyCode)
  181.  
  182. --Lab 2 insert script
  183. --IMPORTANT! If you need to run this script more than once you must drop and recreate your tables first to reset the identity properties.
  184. DELETE JobService
  185. DELETE Service
  186. DELETE JobSupply
  187. DELETE Supply
  188. DELETE SupplyCategory
  189. DELETE Job
  190. DELETE Client
  191. DELETE StaffTraining
  192. DELETE Training
  193. DELETE Staff
  194. DELETE StaffType
  195.  
  196.  
  197.  
  198.  
  199. INSERT INTO StaffType (Description,Wage)
  200. VALUES ('Painter',25)
  201. INSERT INTO StaffType (Description,Wage)
  202. VALUES ('Sander',20)
  203. INSERT INTO StaffType (Description,Wage)
  204. VALUES ('Builder',30)
  205. INSERT INTO StaffType (Description,Wage)
  206. VALUES ('Demolition',35)
  207. INSERT INTO StaffType (Description,Wage)
  208. VALUES ('Cleaning',15)
  209.  
  210.  
  211. INSERT INTO Staff (StaffID,FirstName,LastName,TrainingCredits,StaffTypeCode,phone)
  212. VALUES (11111,'Jason','Painter',12,1,'(780) 111-2222')
  213. INSERT INTO Staff (StaffID,FirstName,LastName,TrainingCredits,StaffTypeCode,phone)
  214. VALUES (22222,'Suzy','Cleaner',12,5,'(780) 111-3333')
  215. INSERT INTO Staff (StaffID,FirstName,LastName,TrainingCredits,StaffTypeCode,phone)
  216. VALUES (33333,'Alex','Boom',13,4,'(780) 111-4444')
  217. INSERT INTO Staff (StaffID,FirstName,LastName,TrainingCredits,StaffTypeCode,phone)
  218. VALUES (44444,'Adam','Scraper',15,2,'(780) 111-5551')
  219. INSERT INTO Staff (StaffID,FirstName,LastName,TrainingCredits,StaffTypeCode,phone)
  220. VALUES (55555,'Bob','LaBuilder',21,3,'(780) 111-6666')
  221.  
  222. INSERT INTO Training (TrainingID, Description, Credits)
  223. VALUES ('Paint101','Introduction to Painting',3)
  224. INSERT INTO Training (TrainingID, Description, Credits)
  225. VALUES ('Finishing123','Sanding and Finishing',6)
  226. INSERT INTO Training (TrainingID, Description, Credits)
  227. VALUES ('Cleaning224','Cleaning and Clearing',3)
  228. INSERT INTO Training (TrainingID, Description, Credits)
  229. VALUES ('Demolition101','Making Things go Boom!',4)
  230. INSERT INTO Training (TrainingID, Description, Credits)
  231. VALUES ('Safety104','Basic Safety Protocols',3)
  232. INSERT INTO Training (TrainingID, Description, Credits)
  233. VALUES ('Repairs105','Basic Repairs',3)
  234. INSERT INTO Training (TrainingID, Description, Credits)
  235. VALUES ('ClientConflict202','Dealing with Grumpy Clients',6)
  236. INSERT INTO Training (TrainingID, Description, Credits)
  237. VALUES ('Building321','Basic Building Concepts',6)
  238.  
  239.  
  240. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  241. VALUES (11111,'Paint101','Jan 1 2016')
  242. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  243. VALUES (11111,'Safety104','Jan 4 2016')
  244. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  245. VALUES (11111,'ClientConflict202','Jan 7 2016')
  246.  
  247. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  248. VALUES (22222,'Cleaning224','Jan 1 2016')
  249. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  250. VALUES (22222,'Safety104','Jan 4 2016')
  251. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  252. VALUES (22222,'ClientConflict202','Jan 7 2016')
  253.  
  254. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  255. VALUES (33333,'Demolition101','Jan 1 2016')
  256. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  257. VALUES (33333,'Safety104','Jan 4 2016')
  258. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  259. VALUES (33333,'ClientConflict202','Jan 7 2016')
  260.  
  261. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  262. VALUES (44444,'Finishing123','Jan 1 2016')
  263. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  264. VALUES (44444,'Safety104','Jan 4 2016')
  265. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  266. VALUES (44444,'ClientConflict202','Jan 7 2016')
  267.  
  268. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  269. VALUES (55555,'Building321','Jan 1 2016')
  270. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  271. VALUES (55555,'Safety104','Jan 4 2016')
  272. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  273. VALUES (55555,'ClientConflict202','Jan 7 2016')
  274. INSERT INTO StaffTraining(StaffID, TrainingID, CompletionDate)
  275. VALUES (55555,'Finishing123','Jan 7 2016')
  276.  
  277. INSERT INTO Client (FirstName, LastName, Phone)
  278. VALUES ('Peggy', 'Sue','(780) 111-1111')
  279. INSERT INTO Client (FirstName, LastName, Phone)
  280. VALUES ('Maggie', 'May','(780) 222-2222')
  281. INSERT INTO Client (FirstName, LastName, Phone)
  282. VALUES ('Billy', 'Jean','(780) 111-1111')
  283. INSERT INTO Client (FirstName, LastName, Phone)
  284. VALUES ('Bobby', 'McGee','(780) 111-1111')
  285. INSERT INTO Client (FirstName, LastName, Phone)
  286. VALUES ('Tom', 'Dooly','(780) 111-1111')
  287. INSERT INTO Client (FirstName, LastName, Phone)
  288. VALUES ('Mary', 'Jane','(780) 111-1111')
  289. INSERT INTO Client (FirstName, LastName, Phone)
  290. VALUES ('Jimmy', 'Mack','(780) 111-1111')
  291. INSERT INTO Client (FirstName, LastName, Phone)
  292. VALUES ('Eleanor', 'Rigby','(780) 111-1111')
  293.  
  294. INSERT INTO Service (ServiceCode,Description,CostPerHour)
  295. VALUES ('Prime1','Priming',20)
  296. INSERT INTO Service (ServiceCode,Description,CostPerHour)
  297. VALUES ('Painting1','Painting',20)
  298. INSERT INTO Service (ServiceCode,Description,CostPerHour)
  299. VALUES ('Construction10','Basic Reconstruction',40)
  300. INSERT INTO Service (ServiceCode,Description,CostPerHour)
  301. VALUES ('Construction20','Advanced Construction',60)
  302. INSERT INTO Service (ServiceCode,Description,CostPerHour)
  303. VALUES ('Demolition','Demolition of Property',30)
  304. INSERT INTO Service (ServiceCode,Description,CostPerHour)
  305. VALUES ('Sanding1','Surface Sanding',20)
  306. INSERT INTO Service (ServiceCode,Description,CostPerHour)
  307. VALUES ('Cleaning1','Basic Cleaning',20)
  308. INSERT INTO Service (ServiceCode,Description,CostPerHour)
  309. VALUES ('Garbage1','Removal of Graffit Refuse',25)
  310.  
  311.  
  312.  
  313.  
  314. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  315. VALUES ('Jan 1 2016','12345 Anywhere Street','Edmonton', 'AB','T3D 1S5',120,26,126,11111,1)
  316. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  317. VALUES (1,'Prime1','Prime fence beside the house',3,20,60)
  318. INSERT INTO JobService (JobNumber, ServiceCode, Notes,hours, ActualCostPerHour, extcost)
  319. VALUES (1,'Painting1','Prime fence beside the house',3,20,60)
  320.  
  321. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  322. VALUES ('Jan 2 2016','12345 First Street','Edmonton', 'AB','T3A 1A5',160,8,168,11111,1)
  323. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  324. VALUES (2,'Sanding1','Sand the wall',5,20,100)
  325. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  326. VALUES (2,'Painting1','Paint the wall',3,20,60)
  327.  
  328. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  329. VALUES ('Jan 3 2016','12345 Second Street','Edmonton', 'AB','T3B 1B5',20,1,21,11111,1)
  330. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  331. VALUES (3,'Painting1','Paint the door',1,20,20)
  332.  
  333. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  334. VALUES ('Jan 3 2016','12345 Third Street','Edmonton', 'AB','T3C 1C5',40,2,42,22222,2)
  335. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  336. VALUES (4,'Cleaning1','Clean the wall',2,20,40)
  337.  
  338.  
  339. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  340. VALUES ('Jan 4 2016','12345 Fourth Street','Edmonton', 'AB','T3D 1D5',80,4,84,22222,2)
  341. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  342. VALUES (5,'Cleaning1','Clean the fence',4,20,80)
  343.  
  344.  
  345. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  346. VALUES ('February 5 2016','12345 Fifth Street','Edmonton', 'AB','T3E 1E5',40,2,42,11111,3)
  347. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  348. VALUES (6,'Painting1','Paint the sign',2,20,40)
  349.  
  350.  
  351. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  352. VALUES ('Jan 6 2016','12345 Sixth Street','Edmonton', 'AB','T3F 1F5',60,3,63,33333,5)
  353. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  354. VALUES (7,'Demolition','Take down the sign',2,30,60)
  355.  
  356.  
  357. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  358. VALUES ('Jan 7 2016','12345 Seventh Street','Edmonton', 'AB','T3G 1G5',110,5.5,115.5,33333,1)
  359. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  360. VALUES (8,'Demolition','Clean the wall',2,30,60)
  361. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  362. VALUES (8,'Garbage1','Clean the wall',2,25,50)
  363.  
  364. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  365. VALUES ('February 8 2016','12345 Eighth Street','Edmonton', 'AB','T3H 1H5',40,2,42,44444,6)
  366. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  367. VALUES (9,'Sanding1','Sand the blue fence',2,20,40)
  368.  
  369.  
  370. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  371. VALUES ('February 27 2016','12345 Ninth Street','Edmonton', 'AB','T3I 1I5',20,1,21,44444,7)
  372. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  373. VALUES (10,'Sanding1','Sand the table',1,20,20)
  374.  
  375.  
  376. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  377. VALUES ('February 28 2016','12345 Tenth Street','Edmonton', 'AB','T3J 1J5',200,10,210,55555,8)
  378. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  379. VALUES (11,'Construction10','Rebiuld Table',5,40,200)
  380.  
  381.  
  382. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  383. VALUES ('March 1 2016','12345 Eleventh Street','Edmonton', 'AB','T3K 1K5',600,30,630,55555,3)
  384. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  385. VALUES (12,'Construction20','Build new shed',10,60,600)
  386.  
  387.  
  388. INSERT INTO Job (DATE, Address, City,Province,PostalCode,SubTotal,GST,Total,StaffID,ClientID)
  389. VALUES ('March 3 2016','12345 Twelth Street','Edmonton', 'AB','T3L 1L5',120,6,126,11111,8)
  390. INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours,ActualCostPerHour, extcost)
  391. VALUES (13,'Cleaning1','Clean the whole house!',12,10,120)
  392.  
  393.  
  394. INSERT INTO SupplyCategory (SupplyCategoryCode, Description, StorageRoom)
  395. VALUES ('P5','5 Gallon Paint Products','A101')
  396. INSERT INTO SupplyCategory (SupplyCategoryCode, Description, StorageRoom)
  397. VALUES ('P10','10 Gallon Paint Products','A101')
  398. INSERT INTO SupplyCategory (SupplyCategoryCode, Description, StorageRoom)
  399. VALUES ('P20','20 Gallon Paint Products','A105')
  400. INSERT INTO SupplyCategory (SupplyCategoryCode, Description, StorageRoom)
  401. VALUES ('S101','Sanding Supplies','S101')
  402. INSERT INTO SupplyCategory (SupplyCategoryCode, Description, StorageRoom)
  403. VALUES ('B123','Demolition Equipment','DM212')
  404. INSERT INTO SupplyCategory (SupplyCategoryCode, Description, StorageRoom)
  405. VALUES ('CL10','All Cleaning Supplies','B232')
  406. INSERT INTO SupplyCategory (SupplyCategoryCode, Description, StorageRoom)
  407. VALUES ('B100','Building and Construction Materials','B202')
  408. INSERT INTO SupplyCategory (SupplyCategoryCode, Description, StorageRoom)
  409. VALUES ('PR100','Primers','A211')
  410. INSERT INTO SupplyCategory (SupplyCategoryCode, Description, StorageRoom)
  411. VALUES ('W100','Water','W211')
  412.  
  413.  
  414. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  415. VALUES ('PR104','Grey Primer','PR100')
  416. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  417. VALUES ('RP5','5 Gallon RedPaint','P5')
  418. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  419. VALUES ('BP10','10 Gallon Blue Paint','P10')
  420. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  421. VALUES ('GP20','20 Gallon Green Paint','P20')
  422. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  423. VALUES ('SP10','Sanding Paper','S101')
  424. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  425. VALUES ('PR105','White Primer','PR100')
  426. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  427. VALUES ('PR106','Black Primer','PR100')
  428. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  429. VALUES ('D100','Large Hammer','B123')
  430. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  431. VALUES ('DS100','Drywall Saw','B123')
  432. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  433. VALUES ('L100','Ladder','B100')
  434. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  435. VALUES ('N100','Nails','B100')
  436. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  437. VALUES ('C100','Soap','CL10')
  438. INSERT INTO Supply (SupplyCode,Description, SupplyCategoryCode)
  439. VALUES ('S100','Sponge','CL10')
  440.  
  441. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  442. VALUES(1,'BP10',2)
  443. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  444. VALUES(1,'PR104',2)
  445. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  446. VALUES(2,'PR104',2)
  447. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  448. VALUES(2,'SP10',4)
  449. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  450. VALUES(3,'RP5',1)
  451. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  452. VALUES(4,'C100',2)
  453. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  454. VALUES(4,'S100',2)
  455. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  456. VALUES(5,'C100',2)
  457. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  458. VALUES(5,'S100',2)
  459. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  460. VALUES(6,'RP5',2)
  461. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  462. VALUES(7,'DS100',1)
  463. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  464. VALUES(8,'D100',2)
  465. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  466. VALUES(9,'SP10',2)
  467. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  468. VALUES(10,'SP10',2)
  469. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  470. VALUES(11,'D100',2)
  471. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  472. VALUES(11,'N100',2)
  473. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  474. VALUES(12,'L100',2)
  475. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  476. VALUES(12,'D100',2)
  477. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  478. VALUES(12,'N100',2)
  479. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  480. VALUES(13,'C100',2)
  481. INSERT INTO JobSupply (JobNumber,SupplyCode,Quantity)
  482. VALUES(13,'S100',2)
  483.  
  484. SELECT * FROM JobService
  485. SELECT * FROM  Service
  486. SELECT * FROM  JobSupply
  487. SELECT * FROM  Supply
  488. SELECT * FROM  SupplyCategory
  489. SELECT * FROM  Job
  490. SELECT * FROM  Client
  491. SELECT * FROM  StaffTraining
  492. SELECT * FROM  Training
  493. SELECT * FROM  Staff
  494. SELECT * FROM  StaffType
  495.  
  496. --1
  497. CREATE PROCEDURE AddClient (@FirstName VARCHAR(10) = NULL, @LastName VARCHAR(50) = NULL, @Phone CHAR (14) NOT NULL)
  498. AS
  499. IF @FirstName IS NULL OR @LastName IS NULL OR @Phone IS NULL
  500.     BEGIN
  501.     RaisError ('You must provide a FirstName, LastName, and Phone number',16,1)
  502.     END
  503. ELSE
  504.     BEGIN
  505.     INSERT INTO Client (FirstName, LastName, Phone)
  506.     VALUES (@FirstName, @LastName, @Phone)
  507.     SELECT ClientID FROM Client WHERE FirstName = @FirstName
  508.     END
  509. RETURN
  510. GO
  511.  
  512. --2
  513. CREATE PROCEDURE UpdateTraining (@TrainingID VARCHAR(10) = NULL, @Description VARCHAR(50) = NULL, @Credits CHAR (14) NOT NULL)
  514. AS
  515. IF @TrainingID IS NULL OR @Description IS NULL OR @Credits IS NULL
  516.     BEGIN
  517.     RaisError ('You must provide a FirstName, LastName, and Phone number',16,1)
  518.     END
  519. IF NOT EXISTS (SELECT * FROM Training WHERE TrainingID = @TrainingID)
  520.     BEGIN
  521.     RaisError ('That training is not available.', 16, 1)
  522.     END
  523. IF EXISTS (SELECT * FROM Training WHERE Description = @Description)
  524.     BEGIN
  525.     RaisError ('Training description already exists.')
  526.     END
  527. ELSE
  528.     BEGIN
  529.     UPDATE Training
  530.     SET Description = @Description, Credits = @Credits
  531.     WHERE TrainingID = @TrainingID
  532.     END
  533. RETURN
  534. GO
  535.  
  536. -----Use this for above
  537. CREATE PROCEDURE UpdateClub (@ClubID VARCHAR(10) = NULL, @Clubname VARCHAR(50) = NULL)
  538. AS
  539. IF @ClubID IS NULL OR @Clubname IS NULL
  540.     BEGIN
  541.     RaisError ('You must provide a clubID and clubname',16,1)
  542.     END
  543. ELSE
  544.     BEGIN
  545.     IF NOT EXISTS (SELECT * FROM Club WHERE ClubId = @ClubID)
  546.         BEGIN
  547.         RaisError('That Club does not exist',16,1)
  548.         END
  549.     ELSE
  550.         BEGIN
  551.         UPDATE Club
  552.         SET ClubName = @Clubname
  553.         WHERE ClubId = @ClubID
  554.         IF @@ERROR <>0
  555.             BEGIN
  556.             RaisError ('update failed!',16,1)
  557.             END
  558.         END
  559.     END
  560. RETURN
  561.  
  562. --3
  563. CREATE PROCEDURE DeleteSupplyCategory (@SupplyCategoryCode VARCHAR (5) = NULL)
  564. AS
  565. IF @SupplyCategoryCode IS NULL
  566.     BEGIN
  567.     RaisError ('You must provide a SupplyCategoryCode',16,1)
  568.     END
  569. IF NOT EXISTS (SELECT * FROM SupplyCategory WHERE SupplyCategoryCode = @SupplyCategoryCode)
  570.     BEGIN
  571.     RaisError ('This Supply Category Code is not in the database.',16,1)
  572.     END
  573. IF EXISTS (SELECT * FROM SupplyCategory INNER JOIN supply ON supply.supplycategorycode = supplycategory.supplycategorycode)
  574.     BEGIN
  575.     RaisError ('A supply currently has this supply category code!',16,1)
  576.     END
  577. ELSE
  578.     BEGIN
  579.     DELETE supplycategory WHERE supplycategorycode = @SupplyCategoryCode
  580.     END
  581. RETURN
  582.  
  583. --4
  584. CREATE PROCEDURE LookUpStaffTraining (@StaffID INT = NULL)
  585. AS
  586. IF @StaffID IS NULL
  587.     BEGIN
  588.     RaisError ('You must provide a Staff ID',16,1)
  589.     END
  590. IF NOT EXISTS (SELECT * FROM Staff WHERE StaffID = @StaffID)
  591.     BEGIN
  592.     RaisError ('That Staff ID does not exist',16,1)
  593.     END
  594. ELSE
  595.     BEGIN
  596.     SELECT DISTINCT Firstname + " " + LastName 'Name', TrainingID, CompletionDate, Description, Credits FROM Staff
  597.     INNER JOIN StaffTraining ON Staff.StaffID = StaffTraining.StaffID
  598.     WHERE StaffID = @StaffID
  599.     END
  600. RETURN
  601.  
  602. --5
  603. CREATE PROCEDURE NoJobs()
  604. AS
  605.     BEGIN
  606.     SELECT FirstName, LastName, Phone FROM Client WHERE jobid IS NULL IN (SELECT JobNumber FROM Job)
  607.     END
  608. RETURN
  609.  
  610. --6
  611. CREATE PROCEDURE LookUpStaff (@LastName VARCHAR (50) = NULL)
  612. AS
  613. IF @LastName IS NULL
  614.     BEGIN
  615.     RaisError ('You must provide a Last Name', 16,1)
  616.     END
  617. ELSE
  618.     BEGIN
  619.     SELECT StaffID, Firstname, Lastname, TrainingCredits, Description FROM Staff INNER JOIN StaffType ON Staff.StaffID = StaffType.StaffID WHERE Staff.Lastname LIKE ('%@LastName')
  620.     END
  621. RETURN
  622.  
  623. --7 needs ActualCostPerHour ExtCost but there's no constant?
  624. CREATE PROCEDURE AddJobService (@JobNumber INT = NULL, @ServiceCode VARCHAR (15) = NULL, @Notes VARCHAR (200) = NULL, Hours INT = NULL)
  625. AS
  626. IF @JobNumber IS NULL OR @ServiceCode IS NULL OR @Notes IS NULL OR @Hours IS NULL
  627.     BEGIN
  628.     RaisError ('You must provide all information',16,1)
  629.     END
  630. IF NOT EXISTS (SELECT * FROM Job WHERE JobNumber = @JobNumber)
  631.     BEGIN
  632.     RaisError ('That job does not exist', 16,1)
  633.     END
  634. IF EXISTS (SELECT * FROM Job WHERE JobNumber = @JobNumber)
  635.     BEGIN
  636.     INSERT INTO JobService (JobNumber, ServiceCode, Notes, Hours)
  637.     VALUES (@JobNumber, @ServiceCode, @Notes, @Hours)
  638.     END
  639. RETURN
  640.  
  641. --8
  642. ALTER PROCEDURE AddJobService (
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement