【问题标题】:List the names of the course(s) student Altvater took in semester I-2008列出学生 Altvater 在 I-2008 学期学习的课程名称
【发布时间】:2017-03-30 02:32:22
【问题描述】:

我遇到了一个问题“列出 Altvater 学生在 I-2008 学期学习的课程名称”如果有人能引导我走向正确的方向,我将不胜感激。我想我会使用某种连接。请参考此图http://www.csc.villanova.edu/~mdamian/Past/databasefa13/notes/ch07-inclassex.pdf 我了解我将在我的查询中使用以下部分 其中 StudentName = 'Altvater' 和 其中学期 = 'I-2008'

【问题讨论】:

  • 你试过什么?我可以看到 5 个问题,您在哪个问题上遇到问题?
  • @hemalp108 我遇到的问题是“列出学生 Altvater 在 I-2008 学期学习的课程名称”

标签: sql oracle join oracle-sqldeveloper


【解决方案1】:

尝试以下 SQL:

SELECT COURSENAME
FROM STUDENT S
INNER JOIN REGISTRATION R
ON S.STUDENTID=R.STUDENTID
INNER JOIN SECTION SE
ON R.SECTOINNO=SE.SECTOINNO
AND R.SEMESTER=SE.SEMESTER
INNER JOIN COURSE C
ON SE.COURSEID=C.COURSEID
WHERE S.STUDENTID=54907/* Altvater */
AND R.SEMESTER='I-2008'

您只需要了解表的基本设计即可编写 SQL。 SQL 是一种非常简单的语言。如果您对此查询有任何疑问,请告诉我。

【讨论】:

    【解决方案2】:

    列名在整个架构中是一致的,允许自然连接:

    SELECT DISTINCT CourseName
      FROM STUDENT
           NATURAL JOIN REGISTRATION
           NATURAL JOIN SECTION
           NATURAL JOIN COURSE
     WHERE StudentName = 'Altvater'
           AND Semester = 'I-2008';
    

    【讨论】: