Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-从课程和主题中筛选_Sql_Oracle_Sqlplus - Fatal编程技术网

SQL-从课程和主题中筛选

SQL-从课程和主题中筛选,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我需要帮助解决这个问题: 显示所有CI或CI的学生ID、姓名和课程的查询 参加COSC121、COSC126和MATH111三门课程的UT学生。 用学生ID排序结果。提示:考虑使用自连接。 以下是表格: 学生 学生证 史都华名字 节目 等级 学生证 课程号 等级 这是我到目前为止所拥有的 SELECT s.student_id, s.stu_name, s.program FROM students s, grades g WHERE s.student_id = g.student_id AN

我需要帮助解决这个问题:

显示所有CI或CI的学生ID、姓名和课程的查询 参加COSC121、COSC126和MATH111三门课程的UT学生。 用学生ID排序结果。提示:考虑使用自连接。

以下是表格:

学生 学生证 史都华名字 节目

等级 学生证 课程号 等级

这是我到目前为止所拥有的

SELECT s.student_id, s.stu_name, s.program
FROM students s, grades g
WHERE s.student_id = g.student_id AND
(program = 'CIS' OR program = 'UT') AND
course_id = 'COSC126'
ORDER BY student_id;

如果我将course\u id='COSC126'行更改为course\u id='COSC121'和course\u id='COSC126'和course\u id='MATH111',我将不会得到任何结果。。提前谢谢你

接受自连接提示,我们可以尝试:

SELECT
    s1.student_id,
    s1.stu_name,
    s1.program
FROM students s1
INNER JOIN students s2
    ON s1.student_id = s2.student_id
INNER JOIN students s3
    ON s1.student_id = s3.student_id
WHERE
    s1.program IN ('CIS', 'UT') AND
    s1.course_id = 'COSC121' AND
    s2.course_id = 'COSC126' AND
    s3.course_id = 'MATH111';
对于这类问题,我通常使用聚合方法:

SELECT
    student_id,
    stu_name,
    program
FROM students
WHERE
    program IN ('CIS', 'UT') AND
    course_id IN ('COSC121', 'COSC126', 'MATH111')
GROUP BY
    student_id,
    stu_name,
    program
HAVING
    COUNT(DISTINCT course_id) = 3;
这是你的问题

select s.student_id, s.stu_name, s.program
from students s
inner join grades g on s.student_id = g.student_id 
inner join students t1 on t1.student_id = s.student_id and t1.course_id = 'COSC121'
inner join students t2 on t2.student_id = s.student_id and t2.course_id = 'COSC126'
inner join students t3 on t3.student_id = s.student_id and t3.course_id = 'MATH111'
where 
 s.program in ('CIS', 'UT') or t1.program in ('CIS', 'UT') or t2.program in ('CIS', 'UT')
or t3.program in ('CIS', 'UT')