Advertisement
Guest User

GEM2

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