Sql查询3个表,具有2个多对多关系

时间:2012-05-31 14:12:57

标签: sql database

我有5张桌子。主要表格为:RisCtxRisObjRis

RisCtx * ----------- * RisObj
RisObj * ----------- * Ris

(* --- * =多对多)

所以我又增加了2个表:RisCtxRisObjRisObjRis(对于多对多)。

我想要的是创建一个view来收集RisCtxRis通过RisObj有关联的所有记录。

我有点不知道:(我读过一些关于INNER JOIN的内容,但我没有看到一点清关......

架构 Db Schema

CREATE VIEW `mydb`.`CtxView_CtxFromObj_ObjFromRisk` AS
select RisCtx.*  
from RisCtx  
inner join RisCtxRisObj on RisCtx.id=RisObjRisCtx.RisCtx_id
inner join RisObj  on RisObjRisCtx.RisObj_id=RisObj.id 
inner join RisObjRis on RisObj.id=RisObjRis.Objective_id 
inner join Ris on RisObjRis.Risk_id=Ris.id 

1 个答案:

答案 0 :(得分:1)

由于您尚未提供架构,我无法向您展示您的ON子句应该是什么样子,但基本的查询结构是:

select RisCtx.*
from RisCtx 
inner join RisCtxRisObj on ...
inner join RisObj  on ...
inner join RisObjRis on ...
inner join Ris on ...