2012-05-31 206 views
0

我有5个表。主表是:RisCtx,RisObjRissql查询2个多对多关系的3个表

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

(* --- * =多到-many)

所以我又有两个表叫做:RisCtxRisObjRisObjRis(对于多对多)。

我想要的是创建一个view,它收集RisCtx中的所有记录,它们与RisRisObj有关。

我得有点不知道:(..我看了一些关于内部连接,但我没有看到一点间隙...

架构 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 
+0

请发表您的架构 – RedFilter

+0

好吧,我已经发布了架构,并删除了一些没有必要的东西。会是这样吗? (请参阅OP中的其他信息) – Highmastdon

+0

是的,您的代码看起来不错。 – RedFilter

回答

1

既然你没有提供一个模式,我不能告诉你你的ON条款应该是什么样子,但基本的查询结构为:

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

感谢您的快速回复。是的,它终于对我有意义:)。我会试一试。每个表都有一个ID,'多对多'表具有连接表的两个外键,分别为 _id – Highmastdon