Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.65 KB | None | 0 0
  1. SQL 13.1
  2. -- Opdracht 13.1
  3.  
  4. USE DoctorWho;
  5. GO
  6.  
  7. -- 1. Maak een view aan waarin je de naam van de auteur, naam van de doctor, title en datum van de aflevering plaatst.
  8. -- Hier mogen alleen de afleveringen in die beginnen met de letter F.
  9. CREATE VIEW vAfleveringF
  10. AS
  11. SELECT AuthorName, DoctorName, Title, EpisodeDate
  12. FROM tblEpisode AS Episode
  13. JOIN tblDoctor AS Doctor
  14. ON Doctor.DoctorId = Episode.DoctorId
  15. JOIN tblAuthor AS Author
  16. ON Author.AuthorId = Episode.AuthorId
  17. WHERE Title LIKE 'F%'
  18. GO
  19.  
  20. -- 2. Toon de inhoud van de zojuist aangemaakte view.
  21. SELECT *
  22. FROM vAfleveringF
  23.  
  24. -- 3. Toon uit de view de afleveringen van auteur 'Steven Moffat'.
  25. SELECT *
  26. FROM vAfleveringF
  27. WHERE AuthorName = 'Steven Moffat'
  28.  
  29. -- 4. Pas de bestaande view aan en plaats alleen de afleveringen die beginnen met de letter A.
  30. GO
  31. ALTER VIEW vAfleveringF
  32. AS
  33. SELECT AuthorName, DoctorName, Title, EpisodeDate
  34. FROM tblEpisode AS Episode
  35. JOIN tblDoctor AS Doctor
  36. ON Doctor.DoctorId = Episode.DoctorId
  37. JOIN tblAuthor AS Author
  38. ON Author.AuthorId = Episode.AuthorId
  39. WHERE Title LIKE 'A%'
  40. GO
  41.  
  42. -- 5. Toon uit de view de afleveringen van doctor 'Matt Smith'.
  43. SELECT *
  44. FROM vAfleveringF
  45. WHERE DoctorName = 'Matt Smith'
  46.  
  47. -- 6. Maak een nieuwe view aan waarin je het serienummer, afleveringnummer, titel en de vijand(en) van de aflevering plaatst.
  48. -- Afleveringen waarin meerdere vijanden zitten, zullen meerdere records hebben.
  49. GO
  50. CREATE VIEW vAfleveringVijand
  51. AS
  52. SELECT SeriesNumber, EpisodeNumber, Title, EnemyName
  53. FROM tblEpisode AS Episode
  54. JOIN tblEpisodeEnemy AS EpisodeEnemy
  55. ON Episode.EpisodeId = EpisodeEnemy.EpisodeId
  56. JOIN tblEnemy AS Enemy
  57. ON Enemy.EnemyId = EpisodeEnemy.EnemyId
  58. GO
  59.  
  60. -- 7. Toon het resultaat van de zojuist aangemaakte view en sorteer het resultaat op serienummer en dan op afleveringnummer.
  61. SELECT *
  62. FROM vAfleveringVijand
  63. ORDER BY SeriesNumber ASC, EpisodeNumber ASC;
  64.  
  65. -- 8. Toon de afleveringen uit de view (op alfabetische volgorde) met vijand 'Cybermen'
  66. SELECT Title
  67. FROM vAfleveringVijand
  68. WHERE EnemyName = 'Cybermen'
  69. ORDER BY Title ASC;
  70.  
  71. -- 9. Geef, met behulp van de view, per vijand weer in hoeveel afleveringen hij/zij voorkomt.
  72. -- Toon de vijandnaam en het aantal afleveringen.
  73. -- Sorteer de lijst op aantal afleveringen van hoog naar laag.
  74.  
  75.  
  76.  
  77. -- 10. Verwijder beide views (2 queries)
  78. DROP VIEW vAfleveringVijand;
  79. GO
  80. DROP VIEW vAfleveringF;
  81. GO
  82. =====================================
  83. SQL 13.2
  84. -- Opdracht 13.2
  85.  
  86. USE WorldEvents;
  87. GO
  88.  
  89. -- 1a. Maak een view van alle events.
  90. -- Toon hiervan de kolommen op de volgende manier:
  91. -- * eventnaam: Hetzelfde als in de tabel
  92. -- * datum van het event: Op de Nederlandse manier, dus dag-maand-jaar, bijv. 20-3-2018.
  93. -- * landnaam: naam van het land ( naam van het continent ), bijv. 'Netherland (Europe)'.
  94. GO
  95. CREATE VIEW vEvents
  96. AS
  97. SELECT EventName, CONVERT(VARCHAR(20), EventDate, 103) AS Datum, CountryName + '(' + ContinentName + ')' AS Country
  98. FROM tblEvent AS Event
  99. JOIN tblCountry AS Country
  100. ON Event.CountryID = Country.CountryID
  101. JOIN tblContinent AS Continent
  102. ON Country.ContinentID = Continent.ContinentID
  103.  
  104. SELECT *
  105. FROM vEvents
  106. -- 1b. Pas de view, die je bij 1a hebt gemaakt, aan zodat alleen de events die plaatsvonden in Europa worden getoond.
  107. GO
  108. ALTER VIEW vEvents
  109. AS
  110. SELECT EventName, CONVERT(VARCHAR(20), EventDate, 103) AS Datum, CountryName + '(' + ContinentName + ')' AS Country
  111. FROM tblEvent AS Event
  112. JOIN tblCountry AS Country
  113. ON Event.CountryID = Country.CountryID
  114. JOIN tblContinent AS Continent
  115. ON Country.ContinentID = Continent.ContinentID
  116. WHERE ContinentName = 'Europe'
  117. GO
  118.  
  119. -- 1c. Toon alle inhoud van de view
  120. SELECT *
  121. FROM vEvents
  122.  
  123. -- 1d. Toon de inhoud van de view voor de evenementen die plaatsvonden in Frankrijk.
  124. SELECT *
  125. FROM vEvents
  126. WHERE Country = 'France(Europe)'
  127.  
  128. -- 1e. Wat is een nadeel van een view bij de query van 1d?
  129. --Dat je niet alleen het land kan invullen bij de Where omdat dat samen is gevoegd met het continent
  130.  
  131. -- 1f. Verwijder de view
  132. GO
  133. DROP VIEW vEvents
  134. GO
  135.  
  136. SELECT EventDate
  137. FROM tblEvent
  138. -- 2a. Maak een nieuwe view met alle gebeurtenissen van 1980 t/m 1989.
  139. GO
  140. CREATE VIEW vGebeurtenissen
  141. AS
  142. SELECT EventName, CONVERT(VARCHAR(20),EventDate, 103) AS Datum
  143. FROM tblEvent AS Event
  144. WHERE YEAR(EventDate) BETWEEN 1980 AND 1989
  145. GO
  146.  
  147. -- 2b. Toon met de view alle events die plaats hebben gevonden in maart.
  148. SELECT *
  149. FROM vGebeurtenissen
  150. WHERE Datum LIKE '%03%'
  151.  
  152. -- 3a. Maak een view met daarin alle landen en per land het aantal event dat daar hebben plaatsgevonden.
  153. -- Geef per land ook aan wanneer het eerste en laatste event plaatsvond.
  154. GO
  155. CREATE VIEW vLanden
  156. AS
  157. SELECT CountryName, COUNT(Event.CountryID) AS Aantal
  158. FROM tblEvent AS Event
  159. JOIN tblCountry AS Country
  160. ON Country.CountryID = Event.CountryID
  161. GROUP BY CountryName
  162.  
  163. -- 3b. Toon met een SELECT de landen met meer dan 10 events. Je mag de view nu niet gebruiken.
  164. SELECT CountryName
  165. FROM tblEvent AS Event
  166. JOIN tblCountry AS Country
  167. ON Country.CountryID = Event.CountryID
  168. GROUP BY CountryName
  169. HAVING COUNT(Event.CountryID) > 10
  170.  
  171. -- 3c. Toon met bovenstaande view de landen met meer dan 10 events.
  172. SELECT CountryName
  173. FROM vLanden
  174. WHERE Aantal > 10
  175.  
  176. -- 4a. Schrijf de query waarmee je een lijst toont met alle views.
  177. SELECT *
  178. FROM vLanden, vGebeurtenissen, vEvents
  179.  
  180. -- 4b. Verwijder alle views die nog bestaan.
  181. DROP VIEW vEvents, vGebeurtenissen, vLanden
  182.  
  183. -- 5. Bedenk zelf nog een logische view en maak de query.
  184. GO
  185. CREATE VIEW vCategory
  186. AS
  187. SELECT EventName, CategoryName
  188. FROM tblEvent AS Event
  189. JOIN tblCategory AS Category
  190. ON Event.CategoryID = Category.CategoryID
  191. WHERE CategoryName = 'Sports'
  192. GO
  193.  
  194. SELECT *
  195. FROM vCategory
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement