0

我有四张桌子。第一个包含志愿者列表,第二个包含站点列表,第三个包含项目列表。项目行只是对志愿者和站点的引用,该站点具有一个 id 和一个称为部门的附加列。

所有三个表都派生自名为legacy的第四个表。我需要从名为扇区的列中的旧表中的每一行中提取一个字段,并将其放置在项目表中相应行的扇区列中。

为了在更新projects表时知道我在legacy表中有正确的行,我需要将来自志愿者的列firstnamelastname以及来自sites的列namecityityProvince与legacy中的相应列进行匹配。

我认为我的查询应该是这样的:

UPDATE projects, legacy
  SET
    projects.sector = legacy.sector,    
  WHERE (SUBQUERY CONTAINING COMPARISONS OF OTHER FEILDS IN OTHER TABLES SUCH AS
         volunteers.firstname = legacy.firstname
         volunteers.lastname = legacy.lasttname
         sites.province= legacy.province
         sites.municipality= legacy.municipality
         sites.name= legacy.name)

子查询应该是什么?

4

2 回答 2

0

你不想要一个子查询,你想要一个连接。

我会为你写,但你不展示你的桌子,所以我不能。

但基本上你需要做的第一件事是编写一个SELECT包含正确连接所有内容的所有表。一旦你这样做了,你所需要的就是把它改成一个UPDATE,你就完成了。

于 2011-09-25T21:52:40.580 回答
0
UPDATE projects
  SET sector = legacy.sector
FROM legacy
INNER JOIN sites ON sites.province = legacy.province AND/OR
         sites.municipality = legacy.municipality AND/OR
         sites.name = legacy.name
INNER JOIN volunteers ON volunteers.firstname = legacy.firstname AND/OR
         volunteers.lastname = legacy.lasttname
于 2012-02-28T18:18:01.117 回答