我有Users
的表,其中包含培训预算,ID =主键
ID | UserID | FName | SName | Dept | Budget
1 | 1 | John | Smith | CS | 1000
2 | 2 | Ian | Caine | CS | 2500
3 | 3 | Jane | Kelly | ED | 1000
4 | 1 | John | Smith | EQ | 1000
5 | 2 | Ian | Caine | EQ | 2500
6 | 3 | Jane | Kelly | CS | 1000
然后我有另一张表Courses
来存储他们所采用的课程,ID =主键;
ID | UserID | Course | Date | Dept |Cost
1 | 1 | CS01 | 1/4/18 | CS | 100
2 | 2 | CS01 | 1/4/18 | CS | 100
3 | 1 | CS02 | 10/4/18 | CS | 75
4 | 2 | CS02 | 10/4/18 | CS | 75
5 | 1 | CS01 | 1/4/18 | EQ | 100
我正在使用此查询将两者合并,以便我可以为每个用户添加课程并查看其剩余预算;
SELECT u.UserID, c.Date, c.Cost,
u.Budget -
DSum("sub.Cost", "tbl_Courses", "ID <= " & c.ID &
" AND UserID = " & c.UserID &
" AND Dept = '" & c.Dept & "'") AS [Budget Remaining]
FROM tbl_Users u
INNER JOIN tbl_Courses AS c
ON u.UserID = c.UserID AND u.Dept = c.Dept
您可以下载数据库Here
但是,生成的查询不可更新,我已经检查了为什么无法从链接更新查询的常见原因;
http://allenbrowne.com/ser-61.html
但未能看到错误或解决方案。
答案 0 :(得分:0)
原因在您提供的链接中正确说明:
JOIN中的字段未正确编制索引:JOINed字段中没有主键或唯一索引。
当连接多个列时,这个原因通常是有效的,因为如果字段是唯一索引,则可能不需要连接两个字段。在您的情况下, UserID 在表 Courses 中没有唯一索引,并且 Dept 在两个表中都没有唯一索引。
如果没有更多信息,我无法建议您如何使此查询更新,但很可能这是不可能的。