我试图确定哪些学生没有为特定课程检查教科书。我使用MariaDB
SELECT COUNT(*)
FROM `AllRosters2324`
WHERE `Teacher` = 'TeacherName' AND `Period` IN (2,6)
返回此课程两个期间花名册上的66名学生。
接下来,
SELECT `Title`, `Patron Barcode`
FROM `textBooks`
WHERE `Title` = "TextBookTitle" AND
`Patron Barcode` IN (
SELECT `Student-ID` AS "Patron Barcode"
FROM `AllRosters2324`
WHERE `Teacher` = 'TeacherName' AND `Period` IN (2,6))
返回在这些时段中分配了文本的学生的列表。在这种情况下,名单上的数字是57。因此,9名学生没有指定的文本。
SELECT `Student-ID`
FROM `AllRosters2223`
WHERE `Teacher` = 'TeacherName' AND `Period` IN (2,6)
返回在各个期间注册的66名学生的ID。
我如何编写查询来列出这9个学生ID?
1条答案
按热度按时间yhuiod9q1#
如果在students表和text book表之间使用左(外)联接,则可以确定哪些学生没有链接(因此没有 checkout 相关书籍):
外部联接允许student表的所有行都存在于结果中,因此当没有指向教科书表的链接时,引用该表的任何列都将为空。这在where子句中被利用来发现违规学生。
注意表别名的使用(r = roster,t = textbook)