Read our blogs, tips and tutorials
Try our exercises or test your skills
Watch our tutorial videos or shorts
Take a self-paced course
Read our recent newsletters
License our courseware
Book expert consultancy
Buy our publications
Get help in using our site
547 attributed reviews in the last 3 years
Refreshingly small course sizes
Outstandingly good courseware
Whizzy online classrooms
Wise Owl trainers 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
Search our website
We also send out useful tips in a monthly email newsletter ...
Software ==> | SQL (203 exercises) |
Topic ==> | Variables (11 exercises) |
Level ==> | Relatively easy |
Subject ==> | SQL training |
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:
USE DoctorWho
-- 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
SELECT
@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
SELECT ...
)
Now create two variables and set their values as follows:
Variable name | Value |
---|---|
@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.
You can find other training resources for the subject of this exercise here:
From: | niflheimis |
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
SELECT
@EpisodeName = Title
,@NumberCompanions = COUNT(c.EpisodeId)
,@NumberEnemies = COUNT(EnemyID)
FROM
tblEpisode as e
INNER JOIN tblEpisodeCompanion as c
ON c.EpisodeId = e.EpisodeId
INNER JOIN tblEpisodeEnemy as n
ON e.EpisodeId = n.EpisodeId
WHERE
@EpisodeID = e.EpisodeId
GROUP BY
EpisodeNumber
,e.Title
,e.EpisodeID
SELECT
@EpisodeName AS Title
,@EpisodeID AS 'Episode id'
,@NumberCompanions AS 'Number of companions'
,@NumberEnemies AS 'Number of enemies'
From: | Andy B |
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.
Kingsmoor House
Railway Street
GLOSSOP
SK13 2AA
Landmark Offices
99 Bishopsgate
LONDON
EC2M 3XD
Holiday Inn
25 Aytoun Street
MANCHESTER
M1 3AE
© Wise Owl Business Solutions Ltd 2024. All Rights Reserved.