563 attributed reviews in the last 3 years
Refreshingly small course sizes
Outstandingly good courseware
Whizzy online classrooms
Wise Owls only (no freelancers)
Almost no cancellations
We have genuine integrity
We invoice after training
Review 30+ years of Wise Owl
View our top 100 clients
This exercise is provided to allow potential course delegates to choose the correct Wise Owl Microsoft training course, and may not be reproduced in whole or in part in any format without the prior written consent of Wise Owl.
First (if you haven't already done so) run the script shown above to generate the Doctor Who training database.
You'll find this exercise much easier to do if you have access to the following scalar functions:
|fnCompanions||EpisodeId||A comma-delimited list of the companions in this episode|
|fnEnemies||EpisodeId||A comma-delimited list of the enemies in this episode|
You may have already created these as part of a (much) earlier exercise on variables; otherwise, this should be your first task!
Write a function (the one in the answer is called fnSilly, for reasons which will become apparent) which takes two arguments:
|@CompanionName||Part or all of a companion name||Wilf|
|@EnemyName||Part or all of an enemy name||Ood|
The easiest way to describe what your function should return is by example. If you run this SQL:
-- show episodes featuring either Wilfred Mott or The Ood
SELECT * FROM dbo.fnSilly('wilf','ood')
Then you should see this:
There are 2 episodes featuring Wilf, and 4 featuring the Ood (although one of the episodes is the same in each case).
The important thing to notice is that where an episode is selected by reason of its companion, the Appearing column shows a comma-delimited list of the companions appearing in the episode; where it is selected by reason of its enemy, the Appearing column shows a comma-delimited list of the enemies appearing in the episode.
Still bored? You could always work out how to combine the companions and enemies in the Appearing column for a duplicated episode, to avoid it appearing twice in the list (this isn't included in the answer!).
Optionally, save your query as Getting silly.sql, then close it down.
25 Aytoun Street