使用两个表进行数据操作

问题描述 投票:0回答:4

对于非常模糊的标题,我很抱歉,我真的不知道如何准确地提出我的问题。我需要一些帮助来编写两个表的查询。

这些表名为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 

我尝试过创建视图,加入表格并以不同方式使用计数但没有成功。任何帮助表示赞赏。

mysql sql count jointable
4个回答
2
投票

只需使用count()并离开加入

   select s.subjectcode ,count(number) as numberofassignment from
   Subject s left join Assignment a 
   on s.subjectcode=a.subjectcode 
   group by s.subjectcode 

0
投票

根据您提供的数据,结果无法完全像这样。但是根据你的要求,这样的事情会做的工作:

SELECT s.subjectcode, count(1) as numberofassignment FROM subject s
LEFT JOIN assignment a
    ON s.subectcode = a.subjectcode
GROUP BY s.subjectcode

0
投票

我不确定我是否帮助您,但是当您想要计算主题代码的分配数量时,您可以使用此声明。你不需要join,你可以使用子查询。

select 
 subjectcode,
 (select count(*) from Assignment where subjectcode = s.subjectcode) as numberofassignment
from 
 Subject s

0
投票

这将适用于MySQL:

select subjectcode, (select count(*) from Assignment where subjectcode=s.subjectcode)  
from Subject s
© www.soinside.com 2019 - 2024. All rights reserved.