-2

我有一个 childTable 和 parentTable,familyTable 是我新创建的表,我试图这样做以链接子表和父表的唯一 ID

我的预期结果如下表所示

家庭表

   -------------
FamilyID | ParentID, ChildID
------------
1       |  1   | 1
2       |  2   | 2

但我没能做到,下面是我当前的数据库设计

** 当前数据库设计**

子表

-------------
ChildID | ChildNm
------------
1       |  A
2       |  B

父表

   -------------
ParentID| ParentNm
------------
1       |  A
2       |  B

家庭表

   -------------
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)

我对此查询的实际结果

家庭表

   -------------
FamilyID | ParentID, ChildID
------------
1       |  1  |  1
2       |  2  |  1
3       |  1  |  2
4       |  2  |  2

这不是我想要的结果,任何人都可以给我一些想法吗?

4

1 回答 1

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
于 2013-07-02T09:34:23.953 回答