日期:2014-05-16 浏览次数:20408 次
?
4个互相关联的表间的查询
?
?
有下面4个表,它们的关联关系如下:
?
student(1)---classes(n) : 1对多
?
classes(1)---teacher_class(n): 1对多
?
teacher(1)---teacher_class(n): 1对多
?
?
student : stuid(主键) ? stuname
classes : ?clsid(主键)?? ?clsname
teacher : ?tid(主键)?? ? ? tname
teacher_class : t_c_id(主键)???clsid(外键)???tid(外键)
?
现在要查找 student 表中 stuid 对应的?stuname,?clsname,?tname.
?
步骤如下:
?
1. 先创建一个视图VIEW,查出?classes、teacher、teacher_class 中的?CLSID,CLSNAME,TID,TNAME
?
?
CREATE OR REPLACE VIEW v_t_c AS SELECT TC.CLSID, C.CLSNAME, T.TID, T.TNAME FROM TEACHER_CLASS TC, TEACHER T, CLASSES C WHERE TC.TID = T.TID AND TC.CLSID = C.CLSID;?
2. 将表 student 和视图?v_t_c 作联合查询:
?
?
SELECT S.STUNAME, V.CLSNAME, V.TNAME FROM STUDENT S, V_T_C V WHERE S.CLSID = V.CLSID;