560 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.
Start a query, creating a variable to hold the id number of the Doctor Who episode whose details you want to show:
-- the episode number of interest
DECLARE @EpisodeId int = 54
The aim of this exercise is to get to the point where you can run this command:
-- list out the details for this episode
@EpisodeName as Title,
@EpisodeId as 'Episode id',
@NumberCompanions as 'Number of companions',
@NumberEnemies as 'Number of enemies'
Here's what this should show for episode id 54, for example:
This episode featured 2 companions and 2 enemies.
First, create a variable called @EpisodeName and set this to hold the title of the episode with id number equal to the value of variable @EpisodeId. The syntax that you'll need is:
DECLARE @VariableName VariableType = (
-- some select statement which returns a single value
Now create two variables and set their values as follows:
|@NumberCompanions||The number of companions for this episode (ie the count of the number of rows in table tblEpisodeCompanion where the episode id equals the one contained in the variable @EpisodeId).|
|@NumberEnemies||The number of enemies for this episode (this time counting the number of rows for this episode in table tblEpisodeEnemy).|
Complete and run your query to check that it gives this output if you change the episode id to 42:
This episode had 1 companion and 2 enemies.
Optionally, save your query as Counting by numbers, then close it down.
|When:||17 Jun 22 at 11:23|
I have no experience with SQL (yet:)) and I wrote a slightly different code. I didn't want to write multiple selects, and wanted to write one select with inner join. The code works well, but I was wondering which is more practical in general? This one or the one in the answer?
DECLARE @EpisodeName varchar(100)
DECLARE @EpisodeId int = 42
DECLARE @NumberCompanions int
DECLARE @NumberEnemies int
@EpisodeName = Title
,@NumberCompanions = COUNT(c.EpisodeId)
,@NumberEnemies = COUNT(EnemyID)
tblEpisode as e
INNER JOIN tblEpisodeCompanion as c
ON c.EpisodeId = e.EpisodeId
INNER JOIN tblEpisodeEnemy as n
ON e.EpisodeId = n.EpisodeId
@EpisodeID = e.EpisodeId
@EpisodeName AS Title
,@EpisodeID AS 'Episode id'
,@NumberCompanions AS 'Number of companions'
,@NumberEnemies AS 'Number of enemies'
|When:||17 Jun 22 at 17:11|
I find the comment that you have no experience of SQL unconvincing!
It's often the case in programming that if you can break a complex instruction down into a series of simpler steps the resulting code is easier to debug, understand and maintain. You can be too clever! However, on this occasion I'd say your approach is probably the better one, although it's obviously not what the question asks you to do.
25 Aytoun Street