前段时间金蝶的过来面试.有个数据库方面很简单的题目.居然不会写.还好.现在不会,没事,就怕真正开发的时候不会,那才叫悲剧.

题目是这样的:

---学生表   
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 .留贴.以后时刻提醒自己,勿忘根本 

posted on 2011-08-17 10:18  七月逆流  阅读(434)  评论(1编辑  收藏  举报