假设我有 3 张桌子。
项目 ---------- 项目 ID PK
子项目 ---------- 项目 ID PK 子项目 ID PK
基本上,所有项目都列在“项目”表中。一个项目可以有子项目。例如,如果我的表中有以下行:
项目 ---------- 1 2 3
子项目 ---------- 1,2 1,3
项目 1、2 和 3 共有三个。项目 2 和 3 是项目 1 的子项目。
我有两个问题。首先,外键应该是 Projects 中的 projectId 引用 SubProjects 中的 projectId 和 subProjectId,还是外键应该是 subProjects 中的 projectId 引用 Projects 中的 projectId 和 subProjects 中的 subProjectId 引用 Projects 中的 projectId。
值得注意的是,一个项目可以是多个项目的子项目。
其次,如何通过查询获取项目的子项目。我一直在使用:
Select * from projects p1 Join subProjects sp Join projects p2
where p1.projectId = sp.subProjectId and sp.subProjectId = p2.projectId;
我得到以下结果:
1 , 2 1 , 3
我希望它只是返回
2 3