Advertisement
Guest User

Untitled

a guest
Apr 21st, 2017
614
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.04 KB | None | 0 0
  1. drop table klippekort
  2. drop table ordrelinje
  3. drop table prisfraliste
  4. drop table prisliste
  5. drop table vare
  6. drop table bestilling
  7. drop table udlejningsprodukt
  8. drop table kunde
  9. drop table rabat
  10.  
  11. create table rabat(
  12. rabatID int primary key NOT NULL,
  13. pris int
  14. )
  15. Create table kunde(
  16. kundeID int primary key NOT NULL,
  17. navn varchar(30),
  18. adresse varchar(30),
  19. telefonnr int,
  20. email varchar(30),
  21. rabatID int foreign key references rabat(rabatID)
  22. )
  23. create table klippekort(
  24. klippekortID int primary key NOT NULL,
  25. antalklip int,
  26. pris int,
  27. kundeID int foreign key references kunde(KundeID)
  28. )
  29. create table bestilling(
  30. bestillingID int primary key NOT NULL,
  31. købsdato date default getdate(),
  32. betalingstype varchar(30),
  33. kundeID int foreign key references kunde(KundeID)
  34. )
  35. create table udlejningsprodukt(
  36. udlejningsproduktID int primary key NOT NULL,
  37. udltype varchar(30),
  38. navn varchar(30),
  39. pris int,
  40. udlejet date default getdate(),
  41. tilbagelevering date,
  42. ledig bit default 1 -- Når den er 1 = ledig
  43. )
  44. create table vare(
  45. vareID int primary key NOT NULL,
  46. varetype varchar(30),
  47. udløbsdato date CHECK (udløbsdato >= getDATE() ),
  48. volume int,
  49. navn varchar(30)
  50. )
  51. create table prisliste(
  52. prislisteID int primary key NOT NULL,
  53. navn varchar(30)
  54. )
  55. create table prisfraliste(
  56. prisfralisteID int primary key NOT NULL,
  57. pris int,
  58. vareID int foreign key references vare(vareID) NOT NULL,
  59. prislisteID int foreign key references prisliste(prislisteID) NOT NULL
  60. )
  61. create table ordrelinje(
  62. ordrelinjeID int primary key NOT NULL,
  63. antal int,
  64. bestillingID int foreign key references bestilling(bestillingID),
  65. udlejningsproduktID int foreign key references udlejningsprodukt(udlejningsproduktID),
  66. prisfralisteID int foreign key references prisfraliste(prisfralisteID),
  67. )
  68. --RabatID, pris
  69. insert into rabat values
  70. (1, 50),
  71. (2, 100),
  72. (3, 150),
  73. (4, 200),
  74. (5, 250),
  75. (6, 300)
  76. --KundeID, navn , adresse, telefonnr, email, rabatID
  77. insert into kunde values
  78. (1, 'Daniel', '8900 Randersvej 100', 20202020, 'daniel@gmail.com', 1),
  79. (2, 'Simon', '8210 Gellerupvej 200', 20204020, 'simon@gmail.com', 2),
  80. (3, 'Dennis', '8230 Silkeborgvej 300', 20205020, 'dennis@gmail.com', 3)
  81. -- vareID, varetype, udløbsdato, volume, navn
  82. insert into vare values
  83. (1, 'flasker', '2017-06-06', 75, 'Klosterbryg'),
  84. (2, 'fustage', '2017-06-06', 75, 'Sweet Georgia Brown'),
  85. (3, 'flasker', '2017-06-06', 75, 'Extra Pilsner'),
  86. (4, 'flasker', '2017-06-06', 75, 'Celebration')
  87. --prislisteID, navn
  88. insert into prisliste values
  89. (1, 'fredagsbar'),
  90. (2, 'butik')
  91. --prisfralisteID, pris, fremmedenøgle(vareID), fremmedenøgle(prislisteID)
  92. insert into prisfraliste values
  93. (1, 50, 1, 1),
  94. (2, 36, 1, 2),
  95. (3, 50, 2, 1),
  96. (5, 50, 3, 1)
  97. -- bestillingID, købsdato, betalingstype, fremmedenøgle(kundeID)
  98. insert into bestilling values
  99. (1, '2017-06-06', 'Dankort', 1),
  100. (2, '2017-06-06', 'Mobilpay', 2),
  101. (3, '2017-06-06', 'Kontant', 3)
  102. -- ordrelinjeID, antal, fremmedenøgle(bestillingID), fremmedenøgle(udlejningsproduktID), fremmedenøgle(prisfralisteID)
  103. insert into ordrelinje values
  104. (1, 1, 1, null, 1), -- Dankort, 50 kr.
  105. (2, 2, 2, null, 2), -- Mobilepay, 36 kr.
  106. (3, 4, 3, null, 3), -- kontant 50 kr.
  107. (4, 1, 3, null, 5) -- kontant 50 kr.
  108.  
  109.  
  110.  
  111. drop proc vare_navn
  112.  
  113. -- Opgave 2A
  114. create proc vare_navn
  115. @vareID int,
  116. @vareType varchar(30),
  117. @udløbsdato date,
  118. @volume int,
  119. @navn varchar(30),
  120. @pris int,
  121. @prislistenavn varchar(30)
  122. as
  123. Declare @prisfralisteID int
  124. Declare @prislisteID int
  125. Declare @tempID4PrisListe int -- TEMP BRUGES KUN VED NY PRISLISTE
  126. Select @prislisteID = prisliste.prislisteID
  127. from prisliste
  128. if exists (select (prisliste.navn) from prisliste where prisliste.navn = @prislistenavn)
  129. begin
  130. set @prisfralisteID = (select MAX(prisfraliste.prisfralisteID)+1 from prisfraliste)
  131. insert into vare values
  132. (@vareID, @vareType, @udløbsdato, @volume, @navn)
  133. insert into prisfraliste values
  134. (@prisfralisteID, @pris, @vareID, @prislisteID)
  135. END
  136. else
  137. begin
  138. set @prisfralisteID = (select MAX(prisfraliste.prisfralisteID)+1 from prisfraliste)
  139. set @tempID4PrisListe = (select MAX(prisliste.prislisteID)+1 from prisliste)
  140. insert into prisliste values
  141. (@tempID4PrisListe, @prislistenavn)
  142. insert into vare values
  143. (@vareID, @vareType, @udløbsdato, @volume, @navn)
  144. insert into prisfraliste values
  145. (@prisfralisteID, @pris, @vareID, @prislisteID)
  146. END
  147.  
  148.  
  149. exec vare_navn @vareID = 14, @vareType = 'flasker', @udløbsdato = '2017-06-06', @volume = 10,
  150. @navn = 'blondie', @pris = 100, @prislistenavn = 'butik'
  151.  
  152. -- start på test til Opgave 2A
  153. Select prisfraliste.prislisteID
  154. from prisfraliste, prisliste
  155. where prisfraliste.prislisteID = prisliste.prislisteID
  156.  
  157. Select *
  158. from vare
  159.  
  160. select prisfraliste.vareID
  161. from prisfraliste, vare
  162. where prisfraliste.vareID = vare.vareID
  163.  
  164. Select *
  165. from prisliste
  166. -- Slut på test til opgave 2A
  167.  
  168.  
  169. -- opgave 2B del 1
  170. create procedure salgpaadagen
  171. @dato date
  172. as
  173. select prisfraliste.pris
  174. from prisfraliste
  175. full join ordrelinje
  176. on prisfraliste.prisfralisteID = ordrelinje.prisfralisteID
  177. full join bestilling
  178. on ordrelinje.bestillingID = bestilling.bestillingID
  179. where bestilling.købsdato = @dato
  180.  
  181. exec salgpaadagen @dato = '2017-06-06'
  182.  
  183.  
  184. -- opgave 2B del 2
  185. Create proc salgprgruppe
  186. @dato date,
  187. @type varchar(30)
  188. as
  189. select prisfraliste.pris
  190. from prisfraliste
  191. full join vare
  192. on vare.vareID = prisfraliste.vareID
  193. full join ordrelinje
  194. on prisfraliste.prisfralisteID = ordrelinje.prisfralisteID
  195. full join bestilling
  196. on ordrelinje.bestillingID = bestilling.bestillingID
  197. where bestilling.købsdato = @dato and vare.varetype = @type
  198.  
  199. drop proc salgprgruppe
  200.  
  201. exec salgprgruppe @dato = '2017-06-06', @type = 'flasker'
  202.  
  203.  
  204. --opgave 3A Løsning 1
  205. create proc visVarePrisliste
  206. @vare as varchar(30),
  207. @type as varchar(30)
  208. as
  209. select vare.navn, prisfraliste.pris, prisliste.navn
  210. from prisfraliste
  211. full join vare
  212. on vare.vareID = prisfraliste.vareID
  213. full join prisliste
  214. on prisliste.prislisteID = prisfraliste.prislisteID
  215. where vare.navn = @vare and vare.varetype = @type
  216.  
  217. exec visVarePrisliste @vare = 'Klosterbryg', @type = 'flasker'
  218.  
  219. drop proc visVarePrisliste
  220.  
  221.  
  222. --opgave 3A Løsning 2
  223. create proc visVarePrisliste2
  224. @vareID as varchar(30)
  225. as
  226. select vare.navn, prisfraliste.pris, prisliste.navn
  227. from prisfraliste
  228. full join vare
  229. on vare.vareID = prisfraliste.vareID
  230. full join prisliste
  231. on prisliste.prislisteID = prisfraliste.prislisteID
  232. where prisfraliste.vareID = @vareID
  233.  
  234. exec visVarePrisliste2 @vareID = 3
  235.  
  236. drop proc visVarePrisliste2
  237.  
  238.  
  239. --opgave 3A Løsning 3
  240. create proc visVarePrisliste3
  241. @vare as varchar(30),
  242. @type as varchar(30)
  243. as
  244. Declare @vareID int
  245. set @vareID =(Select vare.vareID from vare where vare.navn = @vare and vare.varetype = @type)
  246. select vare.navn, prisfraliste.pris, prisliste.navn
  247. from prisfraliste
  248. full join vare
  249. on @vareID = prisfraliste.vareID
  250. full join prisliste
  251. on prisliste.prislisteID = prisfraliste.prislisteID
  252. where vare.navn = @vare and vare.varetype = @type
  253.  
  254. exec visVarePrisliste3 @vare = 'Klosterbryg', @type = 'flasker'
  255.  
  256. drop proc visVarePrisliste3
  257.  
  258.  
  259. --opgave 3B
  260. create proc pris
  261. @id int
  262. as
  263. select SUM(prisfraliste.pris * ordrelinje.antal)
  264. as total
  265. from prisfraliste
  266. full join ordrelinje
  267. on prisfraliste.prisfralisteID = ordrelinje.prisfralisteID
  268. full join bestilling
  269. on ordrelinje.bestillingID = bestilling.bestillingID
  270. where bestilling.bestillingID = @id
  271. group by prisfraliste.pris
  272.  
  273. exec pris @id = 3
  274.  
  275. drop proc pris
  276.  
  277. --opgave 3C Løsning 1 - Hent rabatten for en bestemt bestilling
  278. create proc getRabat
  279. @bestillingId int
  280. as
  281. select rabat.pris
  282. from rabat
  283. full join kunde
  284. on rabat.rabatID = kunde.rabatID
  285. full join bestilling
  286. on kunde.kundeID = bestilling.bestillingID
  287. where bestilling.bestillingID = @bestillingId
  288.  
  289. exec getRabat @bestillingId = 2
  290.  
  291. drop proc getRabat
  292.  
  293. --opgave 3C Løsning 2 - pris for bestillingen minus(-) rabatten
  294. create proc totalpris
  295. @id int
  296. as
  297. select sum(prisfraliste.pris*ordrelinje.antal) - rabat.pris as Pris
  298. from prisfraliste
  299. full join ordrelinje
  300. on prisfraliste.prisfralisteID = ordrelinje.prisfralisteID
  301. full join bestilling
  302. on ordrelinje.bestillingID = bestilling.bestillingID
  303. full join kunde
  304. on bestilling.kundeID = kunde.kundeID
  305. full join rabat
  306. on kunde.rabatID = rabat.rabatID
  307. where bestilling.bestillingID = @id
  308. group by prisfraliste.pris, rabat.pris
  309.  
  310. exec totalpris @id = 3
  311.  
  312. drop proc totalpris
  313.  
  314. --Opgave3D
  315. create proc opg3D
  316. @prisliste varchar(30),
  317. @vareNavn varchar(30)
  318. as
  319. Select prisliste.navn, prisfraliste.pris
  320. from prisfraliste
  321. full join prisliste
  322. on prisfraliste.prislisteID = prisliste.prislisteID
  323. full join vare
  324. on prisfraliste.vareID = vare.vareID
  325. where prisliste.navn = @prisliste and vare.navn = @vareNavn
  326.  
  327. exec opg3D @prisliste = 'fredagsbar', @vareNavn = 'Celebration'
  328.  
  329. drop proc opg3D
  330.  
  331. --opgave 4 // Opdatere varene
  332. create proc opdatereVare
  333. @vareID int,
  334. @varetype varchar(30),
  335. @udløbsdato date,
  336. @volume int,
  337. @navn varchar(30)
  338. as
  339. update vare
  340. set
  341. vare.varetype = @varetype,
  342. vare.udløbsdato = @udløbsdato,
  343. vare.volume = @volume,
  344. vare.navn = @navn
  345. where vare.vareID = @vareID
  346.  
  347. exec opdatereVare @vareid = 1, @varetype = 'flasker', @udløbsdato = '2017-06-10', @volume = 5000, @navn = 'DanielBryg'
  348.  
  349. drop proc opdatereVare
  350.  
  351. select *
  352. from vare
  353.  
  354.  
  355.  
  356.  
  357. --set @prisfralisteID = (select MAX(prisfraliste.prisfralisteID)+1 from prisfraliste)
  358. -- opgave 4 // Slet vare
  359. create proc sletVare
  360. @vareid int
  361. as
  362. delete ordrelinje
  363. from prisfraliste
  364. where ordrelinje.prisfralisteID = prisfraliste.prisfralisteID and prisfraliste.vareID = @vareid
  365. delete prisfraliste
  366. where prisfraliste.vareID = (@vareid)
  367. delete vare
  368. where vare.vareID = @vareid
  369.  
  370. exec sletVare @vareid = 1
  371. exec sletVare @vareid = 2
  372. exec sletVare @vareid = 3
  373. exec sletVare @vareid = 14
  374.  
  375. drop proc sletVare
  376.  
  377. select *
  378. from vare
  379.  
  380. select *
  381. from bestilling
  382.  
  383. select *
  384. from ordrelinje
  385.  
  386. select *
  387. from prisliste
  388.  
  389.  
  390.  
  391.  
  392. --opgave 5
  393. create trigger tjekpåsletvare on vare for delete
  394. as
  395. begin
  396. delete prisliste
  397. from prisliste
  398. where prisliste.prislisteID NOT IN (Select prisfraliste.prislisteID from prisfraliste)
  399. end
  400. go
  401.  
  402.  
  403. drop trigger tjekpåsletvare
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement