两个表的数据操作

Data manipulation with two tables

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

这些表名为 subjectassignment,它们看起来像这样:

主题

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 

我尝试过创建视图、连接表格以及以不同方式使用计数,但都没有成功。感谢任何帮助。

我不确定我是否理解对了,但是当你想计算 subjectcode 的赋值次数时,你可以使用这个语句。您不需要 join,您可以使用子查询。

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

根据您提供的数据,结果不可能完全一样。但根据您的要求,这样的事情就可以完成工作:

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

只需使用 count() 并左连接

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

这将适用于 MySQL:

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