SQL / MS Access:別のテーブルの値の合計を使用してSQLテーブルに自動的に更新されるフィールドを追加する

ケネスHK

私はMSAccessを使用してデータベースを構築していますが、AccessとSQL言語はまったく初めてです。
別のテーブルからリストされた値の合計に基づいてその値を自動的に更新するフィールドをテーブルに追加したいと思います。



例:

あるスタッフ給与テーブルは、と私は追加したいの合計にフィールドをスタッフに記載された給与の合計額に等しいテーブル、給与、各スタッフのためのテーブル。
ステップバイステップのアプローチで、私は各スタッフの給与の合計を行うクエリを作成することができました


スタッフ

| id |   name   |
|----|----------|
| A1 | staff A1 |
| A2 | staff A2 |
| B1 | staff B1 |

給与

| id | month | salary |
|----|-------|--------|
| A1 |  JAN  |  10000 |
| A2 |  JAN  |  15000 |
| A1 |  FEB  |  10000 |

合計

SELECT staff.id, SUM([payroll]![salary]) AS total
FROM payroll 
INNER JOIN staff ON staff.id = payroll.id
GROUP BY staff.id;

| id | total |
|----|-------|
| A1 | 20000 |
| A2 | 15000 |

期待される結果:スタッフ

| id |   name   | total |
|----|----------| ----- |
| A1 | staff A1 | 20000 |
| A2 | staff A2 | 15000 |
| B1 | staff B1 |     0 |

質問:

MS Accessで、スタッフ合計フィールドにルックアップクエリを追加して値を自動更新しようとしましたが、選択するためのコンボボックスオプションしか表示されません。この問題に対する提案や解決策はありがたいです。

SELECT total
FROM summation
WHERE staff.id = summation.id
ゴードン・リノフ

あなたが欲しいLEFT JOINNZ()

SELECT s.id, NZ(SUM(p.salary)) AS total
FROM staff as s LEFT JOIN
     payroll as p
     ON s.id = p.id
GROUP BY s.id;

相関サブクエリを使用してこれを記述することもできます。これにより、以下からより多くの列を保持することが容易になりますstaff

select s.*,
       (select nz(sum(p.salary))
        from payroll as p
        where p.id = s.id
       ) as total
from staff as s;

あなたが持っている場合totalには、列をstaffあなたの最後のアプローチを使用して、それを更新することができます。

update staff
    set total = (select nz(sum(p.salary))
                 from payroll as p
                 where p.id = staff.id
                );

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ