![](/img/trans.png)
[英]sql adding a field to a table and updating it with count values from another table
[英]SQL/MS Access: Adding a automatically updating field in SQL table with sum of values from another table
我正在用 MS Access 構建一個數據庫,我對 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
使用 STAFF 表中的主表可能會起作用,例如;
SELECT staff.id, SUM([payroll]![salary]) AS total
FROM staff
INNER JOIN payroll ON staff.id = payroll.id
GROUP BY staff.id;
INNER JOIN
意味着,您將兩個具有共同值的表相加,這意味着如果B1
不存在於payroll
表中,它也不會出現在關系表中。
FULL OUTER JOIN
將幫助您查詢兩個表中的所有數據。
也許這張圖表可以解釋我的意思;
也許您需要使用FULL OUTER JOIN
。 所以,它必須這樣;
SELECT staff.id, SUM([payroll]![salary]) AS total
FROM payroll
FULL OUTER JOIN staff ON staff.id = payroll.id
GROUP BY staff.id;
輸出
| id | name | total |
|----|----------| ----- |
| A1 | staff A1 | 20000 |
| A2 | staff A2 | 15000 |
| B1 | staff B1 | 0 |
參考: SQL 連接
你想要一個LEFT JOIN
和NZ()
:
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;
如果您在staff
有一個total
列,您可以使用最后一種方法更新它:
update staff
set total = (select nz(sum(p.salary))
from payroll as p
where p.id = staff.id
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.