-1

私は3つのテーブルを持っています:

TableA

+-------+--------+--------+
| id_a  | name   | total  |
+-------+--------+--------+
|    1  | Andrew |        |
|    2  | Jhon   |        |
+-------+--------+--------+

TableB

+-------+--------+--------+--------+
| id_b  | id_a   | amount | id_c   |
+-------+--------+--------+--------+
|    1  | 1      |    5   | 1      |
|    2  | 1      |    1   | 2      |
+-------+--------+--------+--------+

TableC

+-------+--------+
| id_c  | status |
+-------+--------+
|    1  | 1      |
|    2  | 0      |
+-------+--------+

したがって、私がする必要があるのは、id_a = (1 または投稿された id) であり、id_c のステータスが 1 または 0 である TableB から金額の合計をカウントし、それを TableA の合計列に設定することです。totalid_a = 1 が値を含む TableAのフィールドの上に投稿したテーブル6

私はこの方法でクエリを実行しようとしています:

UPDATE TableA SET total=(SELECT SUM(amount) as sum FROM TableB WHERE id_a = 1 GROUP BY(sum))

しかし、これは間違っています(私は思います)。これに対するクエリはどのようにすればよいでしょうか。

4

2 に答える 2

1

INNER JOIN内部で TableB と TableCの間に を使用できますSELECT

UPDATE TableA SET
    total=(
        SELECT SUM(amount) FROM TableB
                           INNER JOIN TableC ON TableB.id_c = TableC.id_c
        WHERE id_a = 1 AND (status = 1 OR status = 0)
        GROUP BY id_a
    )
WHERE id_a = 1
于 2013-01-18T01:05:08.403 に答える
1

これを試して

   UPDATE TableA SET total=(SELECT SUM(amount)  FROM TableB WHERE id_a = 1)
于 2013-01-18T01:06:40.863 に答える