对于非常模糊的标题,我很抱歉,我真的不知道如何准确地提出我的问题。我需要一些帮助来编写两个表的查询。
这些表名为subject和assignment,它们看起来像这样:
学科
subjectcode | subjectname | classcode
---------------------------------------------
BAC3000 | Bachelorassignment | IS3
DAT1000 | Databasetechonlogy | IS1
INF1000 | Informationsystems | IS1
LED2000 | IT-leadership | IS2
OBJ2000 | OOP | IS2
PRG3000 | Applied programming | IS3
分配
subjectcode | number | deadline
-------------------------------------
DAT1000 | 1 | 2020-10-20
DAT1000 | 2 |
INF1000 | 1 | 2020-10-30
INF1000 | 2 |
我需要编写一个查询,输出所有主题代码和主题分配的数量。输出应该是这样的:
subjectcode | numberofassignment
--------------------------------
BAC3000 | 0
DAT1000 | 2
INF1000 | 2
LED2000 | 0
OBJ2000 | 0
PRG3000 | 0
我尝试过创建视图,加入表格并以不同方式使用计数但没有成功。任何帮助表示赞赏。
只需使用count()
并离开加入
select s.subjectcode ,count(number) as numberofassignment from
Subject s left join Assignment a
on s.subjectcode=a.subjectcode
group by s.subjectcode
根据您提供的数据,结果无法完全像这样。但是根据你的要求,这样的事情会做的工作:
SELECT s.subjectcode, count(1) as numberofassignment FROM subject s
LEFT JOIN assignment a
ON s.subectcode = a.subjectcode
GROUP BY s.subjectcode
我不确定我是否帮助您,但是当您想要计算主题代码的分配数量时,您可以使用此声明。你不需要join
,你可以使用子查询。
select
subjectcode,
(select count(*) from Assignment where subjectcode = s.subjectcode) as numberofassignment
from
Subject s
这将适用于MySQL:
select subjectcode, (select count(*) from Assignment where subjectcode=s.subjectcode)
from Subject s