我有一个childTable和parentTable,而familyTable是我新创建的表 我试图做什么来链接子和父表唯一ID
我的预期结果如下表
FamilyTable
-------------
FamilyID | ParentID, ChildID
------------
1 | 1 | 1
2 | 2 | 2
但我没有这样做,下面是我目前的数据库设计
**当前数据库设计**
ChildTable
-------------
ChildID | ChildNm
------------
1 | A
2 | B
ParentTable
-------------
ParentID| ParentNm
------------
1 | A
2 | B
FamilyTable
-------------
FamilyID | ParentID, ChildID
------------
1 |
2 |
下面的是我的插入声明
INSERT INTO FamilyTable (ParentID,ChildID)
SELECT p.ParentID, c.ChildID
FROM ParentTable p, ChildTable c
WHERE NOT EXISTS (SELECT 1 FROM FamilyTable where parentsID=p.parentID and childID=c.childID)
此查询的实际结果
FamilyTable
-------------
FamilyID | ParentID, ChildID
------------
1 | 1 | 1
2 | 2 | 1
3 | 1 | 2
4 | 2 | 2
这不是我想要的结果,是否有任何身体可以给我一些想法?
答案 0 :(得分:0)
假设你在parentnm / childnm上匹配它们(否则你只需要一个交叉连接,为你提供所有可能的组合,这是你现在拥有的)
INSERT INTO FamilyTable (ParentID,ChildID)
SELECT p.ParentID, c.ChildID
FROM ParentTable p
INNER JOIN ChildTable c
ON p.ParentN, = c.ChildNm
LEFT OUTER JOIN FamilyTable f
ON f.parentsID = p.parentID AND f.childID=c.childID
WHERE f.parentsID IS NULL