0

私は4つのテーブルを持っています。1つ目はボランティアのリスト、2つ目はサイトのリスト、3つ目はプロジェクトのリストです。プロジェクト行は、ボランティアと、IDとセクターと呼ばれる追加の列を持つサイトへの参照にすぎません。

3つのテーブルはすべて、 legacyと呼ばれる4番目のテーブルから派生しています。セクターと呼ばれる列のレガシーテーブルの各行からフィールドをプルし、プロジェクトテーブルの対応する行のセクター列に配置する必要があります。

プロジェクトテーブルを更新するときにレガシーテーブルに正しい行があることを知るには、ボランティアの名前との列と、サイトの名前自治体州の列を、レガシーの対応する列と一致させる必要があります

私のクエリは次のようになります。

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 に答える