6

父が会社でレポートに使用しているシステムに問題があります。私はそれを構築しませんでしたが、頭を包み込むために最善を尽くしています。それはASPであり、私はそれに精通していません(またはSQLを書いています)。

基本的に、Item、ItemHistory、および Devices という 3 つのテーブルを使用しています。これらのテーブルで私がやろうとしていることは

  • 「アイテム履歴」テーブルの「シリアル番号」列を介して、ユーザーが作業したアイテムを取得します
  • そのシリアル番号を「Item」テーブルの「serialnumber」列と比較して、デバイス タイプを取得します(デバイス列から)。
  • デバイスタイプを使用して、「デバイス」テーブルの「ポイント」列から所定の数値を取得します
  • 値を保存し、クエリによって引き戻された他の値に追加してから、合計を表示します。

*更新を参照*

ご覧のとおり、Device Type が ItemHistory テーブルに含まれていればもっと簡単だったのですが、そうではありませんでした。テーブルを結合しようとしましたが、エラーが発生し続けます(これは、私の知識不足によるもので、かなり確実です)。クエリは日付範囲とユーザー (ItemHistory テーブルから) によるものですが、それは理解できたと思います。すべてのテーブルを参照して「ポイント」を追加することはできません。

どんな助けでも大歓迎です!さらに情報が必要な場合はお知らせください。前もって感謝します。


アップデート

したがって、基本的に私が今問題を抱えているのは、「BOFまたはEOFのいずれかがTrueであるか、現在のレコードが削除されました。要求された操作には現在のレコードが必要です。」というクエリが返され続けることです。ポイント列に数字を追加しているだけなので、原因だと思います。

私の最後の質問の問題は、すべてのデバイスに「ポイント」があるように見せかけたことだと思いますが、実際には一定数のデバイス (たとえば 5 つ) があり、複数のシリアル番号がすべて 1 つのデバイスを指している可能性があります。 . ここでクエリに問題が発生していると思います (ただし、間違っている可能性があります)。また、私の 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 に答える