gpt4 book ai didi

mysql - SQL 列值必须存在于两个表中

转载 作者:行者123 更新时间:2023-11-30 21:59:20 26 4
gpt4 key购买 nike

我想要获取 ID 为 444111110 的学生可以注册的类(class)。可以注册的类(class)是没有先决条件的类(class)或有先决条件他已经取得了成绩。

当然也必须出示学生退学,这样他才能重新注册。它将在等级栏中给出'W'不得显示学生参加的类(class)和他参加的类(class)。如果他已经参加了这门类(class),它将在成绩栏中给出“U”。

#COURSE_ID   PREREQUISITE_COURSE_ID
CS111 NULL
CS211 CS111
CS244 CS311
CS244 CS211
CS244 CS111
CS311 CS211
CS311 CS111

# STUDENT_ID COURSE_ID DATEREGISTERED EnrollToken GREADE
444111110 CS111 2005-03-10 5 A
444111110 CS211 2005-03-10 7 A+
444111111 CS111 2005-03-10 6 W

# COURSE_ID COURSE_NAME TERM CREDITS_HOUR SEATS_LEFT
CS111 Intro. to CS 1 3 50
CS211 Intro. to PS 2 3 50
CS244 Adcanced Application 4 3 50
CS311 Introduction to OOB 3 3 50

我试过这个查询SELECT DISTINCT C.COURSE_ID,C.COURSE_NAME,C.SEATS_LEFT
从注册 E,先决条件 P,类(class) C
WHERE C.COURSE_ID NOT IN(SELECT COURSE_ID FROM ENROLLMENT WHERE STUDENT_ID = '444111110' AND GREADE !='U')
和 P.PREREQUISITE_COURSE_ID 在
(从注册中选择 COURSE_ID,其中 STUDENT_ID = '444111110' 和 GREADE !='W');
但是它为 ID 为 444111110 的学生返回 CS244 和 CS311,而它应该只返回 CS311。对于没有注册任何类(class)或仅撤回第一门类(class) CS111 的学生,它也不会返回任何内容。

有没有办法让它检查学生是否参加了所有先修类(class)而不是其中的一部分?有没有一种方法可以解决未注册任何类(class)的学生的查询,以向他们表明他们可以注册 CS111,前提是 NULL?。

提前致谢。

最佳答案

,试试这个

select course_ID, COURSE_NAME, SEATS_LEFT from Courses
where course_ID in (select course_ID from Enrollment where grade ='W')
or course id in (select course_id from Prerequisites where prerequisite_course_id in (select course_ID from Enrollment where grade != 'W')

关于mysql - SQL 列值必须存在于两个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com