如何为以下问题做出选择语句?

Posted

技术标签:

【中文标题】如何为以下问题做出选择语句?【英文标题】:How do I make a select statement for the following question? 【发布时间】:2020-08-17 11:43:51 【问题描述】:

很抱歉问了一个简单的问题,但是您如何创建此 Select 语句以及您的思考过程是什么? 我已经列出了我认为此 select 语句所需的下表。

问题:创建一个SELECT语句来显示服务的次数列表 要求每个工作人员。显示员工id、员工姓名、service_no、service’s 描述和请求的总次数。

Table: SERVICES
Column Name || Constraints || Default Value || Data Type || Length
SERVICE_NO  || Primary Key ||               || VarChar2  || 10
DESCRIPTION ||             ||               || VarChar2  || 50
CONTRACTOR  ||             ||               || VarChar2  || 20
CCONTACT_NO ||             ||               || VarChar2  || 10

Table: SERVICE_REQUEST
Column Name  || Constraints                          || Default Value || Data Type || Length
SR_ID        || Primary Key                          ||               || Number    || 10
SERVICE_NO   || Foreign Key to the SERVICES table    ||               || VarChar2  || 10
STAFF_ID     || Foreign Key to the STAFF table       ||               || VarChar2  || 10
TEC_ID       || Foreign Key to the TECHNICIANS table ||               || VarChar2  || 10
REQUEST_DATE ||                                      ||               || Date      ||
REQUEST_TIME ||                                      ||               || VarChar2  || 10

Table: STAFF
Column Name || Constraints                       || Default Value || Data Type || Length
STAFF_ID    || Primary key                       ||               || VarChar2  || 10
SNAME       ||                                   ||               || VarChar2  || 30
SIC_NO      || Secondary key                     ||               || VarChar2  || 10
SADDRESS    ||                                   ||               || VarChar2  || 70
SPHONE      ||                                   ||               || VarChar2  || 8
POSITION    ||                                   ||               || VarChar2  || 30
HIRE_DATE   ||                                   ||               || Date      || 
SALARY      ||                                   ||               || Number    || 7,2
SCH_ID      || Foreign Key to the SCHOOL table   ||               || VarChar2  || 10

【问题讨论】:

您为什么不尝试一下并告诉我们您的问题在哪里?这对你来说会很棒...... 您需要连接所有三个表并使用group by 子句来显示每个员工/服务组合的总数。网上有很多例子。 将Services和staff的主键内联到service_request表中,按结果中你想要的列分组,使用count(*)表示次数! SQL select s.staff_id, s.sname, ser.service_no, ser.description, count(ser.service_no) from staff s inner join service_request sr on s.staff_id = sr.staff_id inner join services ser on ser.service_no = sr.service_no group by s.staff_id, s.sname, ser.service_no, ser.description / 所以我为我的查询做了这个,但是我不确定这是否正确,因为我的讲师没有提供任何数据,我无法检查我是否正确;-; 您的查询看起来不错。 【参考方案1】:

使用查询。

select s.staff_id, 
s.sname,    
ser.service_no,
ser.description, 
(select count(service_no) from staff where service_no = ser )
 from service_request sr ,services ser
where  s.staff_id = sr.staff_id 
and ser.service_no = sr.service_no;

【讨论】:

以上是关于如何为以下问题做出选择语句?的主要内容,如果未能解决你的问题,请参考以下文章

如何为表单的 <select> 关系应用 if 语句

如何为动态生成 Select 语句的 30 列表创建索引

如何为更新列的数量是动态的编写更新语句

我如何为这个问题编写 SQL 语句?

如何为查询执行设置语句超时

如何为 SQL 语句创建单元测试?