SQL赋值:使用变量和IF语句

时间:2018-12-07 19:38:29

标签: sql-server tsql

好的,这是关于作业的第一个问题。我只是不知道从哪里开始。如果有人可以帮助我入门,我大概就能弄清楚。谢谢

  1. 设置两个变量值,如下所示:

@minEnrollment = 10 @maxEnrollment = 20

确定分配给@minEnrollment和@maxEnrollment的值之间具有注册的课程数。如果这两个值之间有课程注册,请以

形式显示一条消息

有__个班级,注册人数介于__和__ ..

如果在定义的范围内没有类,则以以下形式显示一条消息 “ __和__个学生之间没有课程。” .....

这是要使用的数据库:

CREATE TABLE Faculty
(Faculty_ID INT  PRIMARY KEY IDENTITY,
LastName VARCHAR (20) NOT NULL,
FirstName VARCHAR (20) NOT NULL,
Department VARCHAR (10) SPARSE NULL,
Campus VARCHAR (10) SPARSE NULL);

INSERT INTO Faculty VALUES ('Brown', 'Joe', 'Business', 'Kent'); 
INSERT INTO Faculty VALUES ('Smith', 'John', 'Economics', 'Kent'); 
INSERT INTO Faculty VALUES ('Jones', 'Sally', 'English', 'South'); 
INSERT INTO Faculty VALUES ('Black', 'Bill', 'Economics', 'Kent'); 
INSERT INTO Faculty VALUES ('Green', 'Gene', 'Business', 'South'); 


CREATE TABLE Course
(Course_ID INT PRIMARY KEY IDENTITY,
Ref_Number CHAR (5) CHECK (Ref_Number LIKE '[0-9][0-9][0-9][0-9][0-9]'),
Faculty_ID INT NOT NULL REFERENCES Faculty (Faculty_ID),
Term CHAR (1) CHECK (Term LIKE '[A-C]'),
Enrollment INT NULL DEFAULT 0 CHECK (Enrollment < 40))

INSERT INTO Course VALUES ('12345', 3, 'A', 24); 
INSERT INTO Course VALUES ('54321', 3, 'B', 18); 
INSERT INTO Course VALUES ('13524', 1, 'B', 7); 
INSERT INTO Course VALUES ('24653', 1, 'C', 29); 
INSERT INTO Course VALUES ('98765', 5, 'A', 35); 
INSERT INTO Course VALUES ('14862', 2, 'B', 14); 
INSERT INTO Course VALUES ('96032', 1, 'C', 8); 
INSERT INTO Course VALUES ('81256', 5, 'A', 5); 
INSERT INTO Course VALUES ('64321', 2, 'C', 23); 
INSERT INTO Course VALUES ('90908', 3, 'A', 38); 

3 个答案:

答案 0 :(得分:2)

部分问题是,您的帖子中实际上有3个左右的问题。因此,与其尝试发布完整的答案,不如尝试使您开始处理每个子问题。

子问题1-如何分配变量。

您需要对“如何在SQL中声明变量”和“如何在SQL中设置变量”进行一些搜索。这个不会太难。

子问题#2-如何在查询中使用变量

同样,您将需要Google搜索操作方法,例如“如何在SQL查询中使用变量”。您会发现这也很简单。

子问题#3-如何在SQL Server中使用IF。

不要打败一匹死马,但是您需要用Google搜索。但是,我想指出一件事:我将首先对此进行测试。最终,您将需要看起来像这样的东西:

IF 1 = 1   -- note, this is NOT the correct syntax (on purpose.)
    STUFF
ELSE
    OTHERSTUFF

然后将其切换到:

IF 1 = 2   -- note, this is NOT the correct syntax (on purpose.)
    STUFF
ELSE
    OTHERSTUFF

...验证真假时是否发生“ STUFF”,否则执行“ OTHERSTUFF”。仅当您掌握了它之后,才应该尝试将其与查询集成(否则,您将不知道正在发生的事情而感到沮丧,并且将更加难以测试。)

答案 1 :(得分:2)

您的请求是如何开始的,所以我将专注于此,而不是任何特定的代码。

首先获取要求的结果,然后继续按要求设置格式。

首先,使用Course表和您现有的变量@minEnrollment = 10@maxEnrollment = 20来获得满足注册要求的列表。提示:WHEREBETWEEN。 (您列出的Faculty表根本没有考虑到这一点。)在确定列表中的结果正确之后,请使用COUNT函数获取所需的数字您的答案,然后将该值分配给新变量。

现在,到输出。 IF的{​​{1}}变量是COUNT>0使用变量将字符串一起填写您应该写的句子中的值。 CONCAT,使用变量填写其他句子。

答案 2 :(得分:0)

一次一次。让我给您一些帮助:

  

按如下所示设置两个变量值:@minEnrollment = 10 @maxEnrollment   = 20

翻译成SQL后,它看起来像:

Declare @minEnrollment integer = 10
Declare @maxEnrollment integer =15
Declare @CourseCount integer = 0
  

确定在两个值之间注册的课程数量   分配给@minEnrollment和@maxEnrollment。

现在,您必须查询表以确定计数:

SET @CourseCount = (SELECT Count(Course_ID) from Courses where Enrollment > @minEnrollment

这不能完全回答您的问题(目的)。希望您可以发现错误并自己解决。其他答案也为您提供了一些有用的提示。