首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查找教师课程查询

SQL查找教师课程查询
EN

Stack Overflow用户
提问于 2018-02-02 20:11:42
回答 3查看 298关注 0票数 0

我正试着让FIRSTNAME老师,LASTNAME老师,还有他的课程数。Oracle数据库CLASS表有列:CLASSIDTEACHERIDCLASSNAME当前代码:

代码语言:javascript
复制
SELECT DISTINCT FIRSTNAME, LASTNAME, COUNT(TEACHERID)
FROM PERSON 
INNER JOIN TEACHER T ON PERSON.PERSONID = T.TEACHERID 
INNER JOIN CLASS C ON T.TEACHERID = C.TEACHERID
WHERE T.TEACHERID = C.TEACHERID;

我的错误在哪里?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-02 20:14:27

听起来你需要一个GroupBy:

代码语言:javascript
复制
SELECT FIRSTNAME, LASTNAME, COUNT(T.TEACHERID)
FROM PERSON 
INNER JOIN TEACHER T ON PERSON.PERSONID = T.TEACHERID 
INNER JOIN CLASS C ON T.TEACHERID = C.TEACHERID
GROUP BY LASTNAME,FIRSTNAME

顺便说一下,我最初删除了这个答案,因为这不是一个好的分组方式。相反,我更喜欢按TEACHERID分组,然后加入以获得名称,而不是按名称分组。

我认为这是一个更好的方法:

代码语言:javascript
复制
SELECT FIRSTNAME, LASTNAME, C.NUMCLASSES
FROM PERSON 
INNER JOIN TEACHER T ON PERSON.PERSONID = T.TEACHERID 
INNER JOIN (SELECT TEACHERID, COUNT(CLASSID) AS NUMCLASSES FROM CLASS GROUP BY TEACHERID) C
ON C.TEACHERID=T.TEACHERID
票数 1
EN

Stack Overflow用户

发布于 2018-02-02 20:23:21

在WHERE子句之后缺少GROUP BY子句。

按FIRSTNAME、LASTNAME、LASTNAME-除聚集函数(如COUNT )中的列之外的所有选定列

票数 0
EN

Stack Overflow用户

发布于 2018-02-02 20:29:14

也许你可以试试

代码语言:javascript
复制
SELECT FIRSTNAME, LASTNAME, 
(select COUNT(C.TEACHERID) form CLASS C ON T.TEACHERID = C.TEACHERID)
as COURSECOUNT
FROM PERSON 
INNER JOIN TEACHER T ON PERSON.PERSONID = T.TEACHERID 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48590202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档