日期:2014-05-16  浏览次数:20408 次

4个互相关联的表间的查询

?

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;