无法组合3个不同的SQL表项并获得总和

wil*_*lku 6 sql asp-classic

我在使用我父亲用于在公司报告的系统时遇到问题.我没有建造它,但我正尽力绕过它.这是ASP,我不是很精通它(或者写sql).

基本上我有三个我正在使用的表,Item,ItemHistory和Devices.在那些表格中,我想要做的是

  • 通过"项目历史记录"表中的"序列号"列获取用户已处理的项目
  • 将该序列号与"Item"表中的"serialnumber"列进行比较,以获取设备类型(来自设备列)
  • 使用设备类型从"设备"表中的"点"列中获取预定数值
  • 存储该值并将其添加到查询提取的任何其他值,然后显示总计.

*见更新*

正如您所看到的,如果设备类型包含在ItemHistory表中会更容易,但事实并非如此.我已经尝试过加入表格但不断出错(这是因为我缺乏知识,我相当肯定).查询是按日期范围和用户(来自ItemHistory表),但我想我已经弄明白了.我只是不能让它引用所有表并将"点"加在一起.

任何帮助是极大的赞赏!如果您需要更多信息,请告诉我们.先感谢您.


更新

所以基本上我现在遇到的问题是查询不断返回"要么BOF或EOF为True,要么当前记录已被删除.请求的操作需要当前记录." 我认为这是因为它只是在点列中添加数字而引起的.

我认为我最后一个问题的问题是我看起来每个设备都有"点",但实际上有一定数量的设备(比如五个),并且可能有多个序列号都指向一个设备.我认为这是查询遇到麻烦的地方(但我可能是错的).另外,我的sql语句看起来非常像下面发布的一个littlebobbytables,除了我自己添加的变量.

这是数据库的样子.

ItemHistory表

Date      | SerialNumber |  DeviceType | User
----------|--------------|-------------|-------
11/1/12   | 123-456-789  |     NULL    | Bill
11/1/12   | 456-123-987  |     NULL    | Bill
11/1/12   | 987-654-321  |     NULL    | Bill
11/1/12   | 216-897-631  |     NULL    | Bill
11/1/12   | 874-547-277  |     NULL    | Bill
Run Code Online (Sandbox Code Playgroud)

物品表

  SerialNumber |  DeviceType
  -------------|-------------
  123-456-789  |  Device1
  456-123-987  |  Device2
  987-654-321  |  Device3
  216-897-631  |  Device1
  874-547-277  |  Device2
Run Code Online (Sandbox Code Playgroud)

设备表

  Device   |  Points
 ----------|----------
  Device1  |    20
  Device2  |    25
  Device3  |    40
Run Code Online (Sandbox Code Playgroud)

而我希望输出的是

  User   |  Points
 --------|----------
  Bill   |    130
Run Code Online (Sandbox Code Playgroud)

Lit*_*les 1

您可以将这些点加在一起,并按用户 ID 进行分组:

SELECT [User], SUM(Points) AS Points
FROM ItemHistory IH
INNER JOIN Item I ON IH.SerialNumber = I.SerialNumber
INNER JOIN Devices D ON I.DeviceType = D.Device
WHERE IH.[Date] = @YourDateVariable
GROUP BY [User]
Run Code Online (Sandbox Code Playgroud)