对不起,标题太模糊了,老实说,我不知道如何准确地提出我的问题。在编写两个表的查询时,我需要一些帮助。
这些表分别命名为 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,但是没有成功。任何帮助表示赞赏。
答案 0 :(得分: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
答案 1 :(得分:0)
我不确定我是否正确,但是当您要计算对主题代码的攻击次数时,可以使用此语句。为此,您不需要join
,而可以使用子查询。
select
subjectcode,
(select count(*) from Assignment where subjectcode = s.subjectcode) as numberofassignment
from
Subject s
答案 2 :(得分:0)
使用您提供的数据,结果看起来不可能完全一样。但是根据您的要求,可以执行以下操作:
c = {18: [2773], 57: [87], 98: [34], 135: [5], 140: [56, 2151, 2194, 2101, 2049, 2298, 2244, 2004], 167: [2343], 236: [2752], 245: [636, 2290, 2241, 2194, 2146, 2098, 2050, 2001, 2337, 1952, 1905, 1857, 1809, 1760, 1713, 1661, 1614], 256: [1717, 1564, 1522], 284: [2773], 303: [2744, 1842, 560, 945, 1026, 975, 875, 854, 833, 783, 1093], 344: [1601, 1477, 1440, 1384, 1362, 1327, 1298, 1237, 1203, 1181, 1130, 972, 924, 880, 787, 1067, 1019, 834, 1299, 1160, 1114], 416: [1253, 1207, 555, 491, 459, 522, 2130, 2092, 1791, 1752, 1589, 2243, 2206, 2168, 2053, 1870, 1831, 1713, 1635, 1513, 1476], 492: [2358, 2321, 2283, 1673, 1551, 2046, 1981, 1956], 570: [2137, 2111, 2073, 2019, 1922], 619: [535], 621: [684, 979, 1110, 613, 2060], 626: [1774, 1824, 1771, 1721], 691: [1926, 1902, 1849, 1798, 1746, 1694], 700: [2743, 421, 650, 602, 556, 510, 466, 746, 697], 896: [1160, 524, 479, 435], 899: [760, 717, 665, 615, 568], 925: [1273], 932: [1087], 936: [1127, 700, 604, 558], 965: [2775, 747, 649]}
答案 3 :(得分:0)
这将在MySQL中工作:
select subjectcode, (select count(*) from Assignment where subjectcode=s.subjectcode)
from Subject s