从 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
子句实施一些过滤(也许您只想要今年的课程?) .
我需要从表模式列表中列出教授的姓名和教授教授的课程
教授: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
子句实施一些过滤(也许您只想要今年的课程?) .