2016-05-14 139 views
0

我有一个成绩表,其中我有以下字段:如何在课程表中获得每个课程名称,我只有课程ID?

-STUDENT_ID
-COURSE_ID
-FIRST_TERM
-SECOND_TERM
-Final

而且课程表:

- COURSE_ID
-NAME
-DEPARTMENT_ID

我试图让每个课程的成绩指定一个特定的学生的所有成绩,我想知道如何获得每门课程的名称?

这是我得到的成绩,但我想包括课程名称也:

SELECT student_id, 
     course_id, 
     (first_term+second_term+final) AS "Total Mark" 
    FROM MARKS 
    WHERE student_id = 1; 

回答

0

您可以使用此查询:

SELECT  s.student_id, 
      s.course_id, 
      c.course_name, 
      (s.first_term+s.second_term+s.final) AS "Total Mark" 
FROM  marks s 
INNER JOIN course c ON c.course_id = s.course_id 
WHERE  s.student_id = 1 

确保与表名前缀字段名,当他们两个表中使用(像course_id)。我已经用表别名前缀所有字段。

表别名就像表的短名称,并且您在FROM子句中的表名后面定义它们。

0
SELECT student_id, m.course_id,c.name as course_name, (first_term+second_term+final) AS "Total Mark" FROM MARKS M inner join course c on m.course_id = c.course_id WHERE student_id = 1; 

使用的内部标志,当然表之间的连接,从课程表中获取的名称。

+0

标记后的M代表什么?分数? – hylo

+0

M是Marks表的别名 –

+0

ORA-00904:“C”。“ID”:无效标识符当我使用oracle 10g运行查询时,出现此错误。我需要改变什么来让它为我工作? – hylo

0
SELECT student_id, 
     course_id, 
     name, 
     (first_term+second_term+final) AS "Total Mark" 
    FROM MARKS m, Course c 
    WHERE (student_id = 1) and c.course_id=m.course_id;