前段时间金蝶的过来面试.有个数据库方面很简单的题目.居然不会写.还好.现在不会,没事,就怕真正开发的时候不会,那才叫悲剧.
题目是这样的:
---学生表
CREATE TABLE student (
ID INTEGER,
stu_No INTEGER,
NAME VARCHAR2(32)
);
--课程表
CREATE TABLE course (
ID INTEGER,
cou_no INTEGER,
NAME VARCHAR2(32)
);
--中间表
CREATE TABLE s_c (
stu_id INTEGER,
cour_id INTEGER
);
问题:
找出名字为张三的学号,姓名 对应学的课程的编号和课程名称,一个sql完成.
请问这个查询语句 应该怎么写..
很久没有接触到数据库了,当时一下头就懵了.就知道往多表关联方面去考虑,没有想到使用join.
--多表查询
SELECT STU.STU_NO, STU.NAME --, COU.COU_NO, COU.NAME
FROM S_C SC
LEFT JOIN STUDENT STU
ON STU.ID = SC.STU_ID
LEFT JOIN COURSE COU
ON COU.ID = SC.COUR_ID
WHERE STU.NAME = '梁帅伟';
--就算他没有参加任何课程,也将他的姓名,学号查询出来 (left join 以 此关键字前的表为准)
SELECT S.STU_NO 学号, S.NAME 姓名, C.COU_NO 课程编号, C.NAME 课程名称
FROM STUDENT S
LEFT JOIN S_C SC
ON S.ID = SC.STU_ID
LEFT JOIN COURSE C
ON C.ID = SC.COUR_ID
WHERE S.NAME = '梁文兴';
OK .留贴.以后时刻提醒自己,勿忘根本