假设我有三张桌子。
项目
----------
投射PK
子项目
----------
投射PK
子项目主键
基本上,所有项目都列在项目表中。项目可以有子项目。例如,如果表中有以下行:
项目
----------



子项目
----------
1,2个
1,3个
有三个项目1、2和3。项目2和3是项目1的子项目。
我有两个问题。首先,外键是引用子项目中projectd和subprojectd的项目中的projectd,还是引用子项目中projectd和subprojectd的子项目中的projectd。
值得注意的是,一个项目可以是多个项目的子项目。
其次,如何通过查询获取项目的子项目。我一直在使用:
Select * from projects p1 Join subProjects sp Join projects p2where p1.projectId = sp.subProjectId and sp.subProjectId = p2.projectId;
我得到以下结果:
1,2个
1,3个
我要它回来

最佳答案

我相信你可能正在寻找一种自我参照的关系
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
在这种情况下,您只需要一个project s表,该表中有一个名为parent_project_id的外键,并且当一个项目是子项目时,该子项目使用该parent_project_id来指示它的父项目。父级在外键方面没有任何子级的引用。

10-06 15:35