6

我父亲在他的公司用于报告的系统有问题。我没有建造它,但我正在尽我最大的努力将它包裹起来。它是 ASP,我不太熟悉它(或者为此编写 sql)。

基本上,我正在使用三个表:Item、ItemHistory 和 Devices。在这些表格中,我想做的是

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

*见更新*

如您所见,如果将设备类型包含在 ItemHistory 表中会容易得多,但事实并非如此。我已经尝试加入表格,但不断收到错误(这是由于我缺乏知识,我相当确定)。查询是按日期范围和用户(来自 ItemHistory 表),但我想我已经弄清楚了。我只是无法让它引用所有表格并将“点”加在一起。

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


更新

所以基本上我现在遇到的问题是查询不断返回“BOF 或 EOF 为真,或者当前记录已被删除。请求的操作需要当前记录。” 我认为这是造成的,因为它只是在点列中添加数字。

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

这是数据库的样子。

项目历史表

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

项目表

  SerialNumber |  DeviceType
  -------------|-------------
  123-456-789  |  Device1
  456-123-987  |  Device2
  987-654-321  |  Device3
  216-897-631  |  Device1
  874-547-277  |  Device2

设备表

  Device   |  Points
 ----------|----------
  Device1  |    20
  Device2  |    25
  Device3  |    40

我希望输出是

  User   |  Points
 --------|----------
  Bill   |    130
4

1 回答 1

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]
于 2012-11-05T21:42:48.147 回答