从 table 中选择名称

Selecting names from table

我需要从表模式列表中列出教授的姓名和教授教授的课程

教授:ID,姓名,DEPARTMENT_ID,薪水

部门:ID,姓名

课程:ID、姓名、DEPARTMENT_ID、学分

时间表:PROFESSOR_ID,COURSE_ID,学期,年份

输出应该是

Brandon Matthews Clinical Biochemistry 
Brandon Matthews Clinical Neuroscience
Daniel Hicks Clinical Biochemistry 
Emily Lee Clinical Biochemistry
Emily Lee clinical Neuroscience
Emily Lee Earth Science
Theresa Peterson Earth Science
Theresa Peterson Geography
Theresa Peterson Materials Science and Metallurgy 
Theresa Peterson Pure Mathematics and Mathematical Statistics

我试过的代码

SELECT
    p.NAME,
    c.NAME 
FROM COURSE c, SCHEDULE s, PROFESSOR p 
WHERE p.ID = s.PROFESSOR_ID AND s.COURSE_ID = c.ID 
ORDER BY  p.NAME;

这不是打印正确的输出。

您还需要在查询中加入 Department table 并加入 ID。然后,您也可以select部门name

像下面这样的东西应该可以工作:

SELECT p.name, d.name, c.name
FROM Course c, Schedule s, Professor p, Department d
WHERE p.id = s.professor_id AND s.course_id = c.id AND d.id = c.department_id
ORDER BY p.name;

您还应该使用 Department table

上的信息
SELECT
    p.NAME,
    d.NAME,
    c.NAME 
FROM
    PROFESSOR p,
    DEPARTMENT d,
    COURSE c, 
    SCHEDULE s
WHERE 
    p.ID = s.PROFESSOR_ID AND 
    d.ID = c.DEPARTMENT_ID AND
    c.ID = s.COURSE_ID
ORDER BY p.NAME;

使用标准联接!然后很容易添加更多的表。

这是您当前的代码:

select p.name, c.name 
from course c, schedule s, professor p 
where p.id = s.professor_id and s.course_id = c.id 
order by  p.name

翻译为:

select p.name as professor_name, c.name as course_name
from schedule s 
inner join course    c on c.id = s.course_id
inner join professor p on p.id = s.professor_id 
order by p.name

请注意,我还为结果集中的列设置了别名,以避免相同名称引起的歧义。

从那时起,您可以根据需要添加更多表格(想到 department),或者对 where 子句实施一些过滤(也许您只想要今年的课程?) .