2

別のテーブルの別のフィールドの合計から、あるテーブルのフィールドを更新しようとしています。

company_tbl(PRIMARY、companySize、companyName)location_tbl(PRIMARY、companyID、locationSize、locationName)

2つのテーブルはcompany_tbl.PRIMARY=location_tbl.companyIDでリンクされています

update company_tbl comp, location_tbl loc
set companySize = sum(locationSize)
where comp.PRIMARY = loc.companyID

「グループ関数の無効な使用」というエラーが発生します

会社は複数の場所を持つことができます

私がやりたいことは可能ですか?特定の会社に属する場所の合計を取得し、その合計でcompanySizeを更新したいと思います。

ありがとう!

4

2 に答える 2

9

使用する:

UPDATE company_tbl comp
   SET companySize = (SELECT SUM(lt.locationSize)
                        FROM location_tbl lt
                       WHERE lt.companyid = comp.primary)

...または、以下を含むビューを使用できます。

   SELECT c.primary,
          COALESCE(SUM(lt.locationsize), 0) AS companysize
     FROM company_tbl c
LEFT JOIN location_tbl lt ON lt.companyid = c.primary
于 2010-06-18T18:10:25.230 に答える
2

まず、companySizeをゼロに初期化します。

UPDATE company_tbl SET companySize = 0; 

次に、一致する場所の行ごとに、locationSizeを追加します。

UPDATE company_tbl comp JOIN location_tbl loc ON comp.PRIMARY = loc.companyID
SET comp.companySize = comp.companySize + loc.locationSize;

各会社の一致するすべての場所を処理するまでに、目的の合計が得られます。

于 2010-06-18T19:14:32.573 に答える