問題タブ [set-based]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
297 参照

mysql - Foxpro プログラムを MySQL ストアド プロシージャに変換する

Ruby on Rails と MySQL を使用して、レガシー システムを Web アプリケーションに変換しようとしています。

データ層を MySQL プロシージャに変換する際に行き詰まった場所はほとんどありません。

以下にシナリオを示します。

ここで、SMA は非常に多くの条件を持つ別の関数であり、別の関数 Lookup も呼び出します。Lookup 関数では、Checks という名前のテーブルを照会します。Lookup へのパラメーターは SMA に基づいています。

さらに詳しい情報が必要な場合は、ディスカッションのソース コードのペーストビンを参照してください。http://pastebin.com/raw/Hvx3b8zN

この種の関数を MySQL プロシージャに変換するにはどうすればよいですか?

編集: プロシージャ指向言語からセットベースのストアドプロシージャまで、これらのタイプの変換をすでに行っている人から、これに関する洞察を探しています。

0 投票する
2 に答える
56 参照

sql-server - ストアド プロシージャは、SET ベースのクエリからデータを取得します

こんにちは、私はストアド プロシージャを作成していますが、後で一時データベースに変数を書き込む必要があるため、印刷でコードを出力する際に​​問題が発生しています。これはコードです:

今、この SELECT ステートメントの出力を印刷したいと思います。しかし、私がこれを行うとき:

print '合計請求金額: ' + CONVERT(nvarchar, fmsTotalAmount) + 'このリレーションの€' print '合計請求金額: ' + CONVERT(nvarchar, fmsTotalRelationAmount) + '€ in total'

しかし、次のエラーが表示されます。

このコンテキストでは、「fmsTotalAmount」という名前は許可されていません。有効な式は、定数、定数式、および (一部のコンテキストでは) 変数です。列名は許可されていません。

このコンテキストでは、「fmsTotalRelationAmount」という名前は許可されていません。有効な式は、定数、定数式、および (一部のコンテキストでは) 変数です。列名は許可されていません。

プリントについて。これから変数に値を取得するにはどうすればよいですか? 行として返す代わりに。変数が必要です。

0 投票する
2 に答える
416 参照

sql - SQL - 非常に人間が読める形式ですが、その背後にある概念がわかりません

私はSQLについて間違った方法で考えているようです。いつもつまらないことを書いています。

たとえば、変数が必要です。だから私は思う:

なぜこれが機能しないのですか...?ここでは完全修飾参照を使用しているため、必要な値は明確である必要があります。

これは機能します...しかし、なぜselectを使用する必要があるのですか?

DDL または DML ステートメントのいずれかを前に付ける必要がありますか?

第二に、SQLステートメントはすべて1つのステップとして扱われるため、行ごとにデバッグできません。私がデバッグできる唯一の方法は、最も内側のサブクエリを選択して実行し、次に外側のサブクエリを含めて実行するということです。

地域窓口はありますか?

反復的思考ではなくセットベースの思考について聞いたことがありますが、関数型言語でもまだ反復的だと思います...反復は、最も内側の括弧から最も外側の括弧までであり、セット全体に適用されます。しかし、ここでも、セット内のどの値がエラーを引き起こしているのかわからないため、問題が発生します。

これが散らかっているように思われる場合は申し訳ありません...それは私がそれについてどのように感じているかを反映していると思います. たくさんの小さなコンポーネントから大きなストアド プロシージャを構築する方法がわかりません......vba のように、別のサブルーチンを呼び出して、必要な変数がグローバルであることを確認できます。

tldr:概念的な根拠が必要です / 何かを入力して F5 キーを押すと実際に何が起こるかを知る

0 投票する
1 に答える
36 参照

sql-server - ステータスの更新と作成者を見つける方法

私は、186 列、257899 行の大きな SQL テーブルを扱っています。メインデータで何かが変更されるたびに追加されます。これはshadow、さまざまなフィールドに何が起こったかの監査履歴を確認できるテーブルの一部です。

私がする必要があるのは、誰が更新したか、いつ更新したか、特定の更新順序を確認することです。特定の3人のユーザーがメインテーブルを更新してから移動するたびに見つける必要があります

  • 請求書 => アクティブ
  • 請求 => 請求なし
  • アクティブ => 進行中

私が集める必要があるのは、

  1. のステータスと切り替え先 (上記のリストから)
  2. 以下の 3 人のユーザーのリストから更新を行っているユーザーの名前
  3. 更新日時
  4. 請求番号

私が探しているユーザーの名前をあげることはできないので、次のようにします。

  • ユーザー1
  • ユーザー2
  • ユーザー3

私は最近、SQL でセットベースの方法で物事を行うことについて学びましたが、これを理解するには十分ではありません。テーブルをループして個々のユーザーによる更新を見つけ、それらの更新をループして上記の基準を満たすものがあるかどうかを確認できることはわかっていますが、セットベースの承認に比べて遅いことはわかっています。

私はこれに取り組み始めたばかりなので、まだコードはありませんが、さまざまなことを試みるたびにこの質問を更新します。

セットベースの問題にする方法を理解する方法がわかりませんか?

アップデート

サンプル データは次のようになります。

#TestingDataデータ テーブルと#TestingTableシャドウ テーブルとして作成し、サンプル データを入力します。

上記のデータを使用したシャドウ テーブルは次のようになります。

上記のデータを使用したデータ テーブルは次のようになります。

私が探している最終結果は次のようなものです。

これが私が試したことです:

これにより、次の結果が得られます。

これはうまくいきません。私が探しているものだけでなく、すべての変更を取得します。これは、セットベースの方法でSQLをプログラミングすることに基づいています

0 投票する
2 に答える
31 参照

sql - セットベースの操作のみを使用して、注文したことのない顧客の SQL 表示 ID

セットベースの操作を使用して、これについて何も見つかりませんでした。私が正しい軌道に乗っているかどうかはわかりませんが、これを行う方法について2つの推測がありますが、私が近いかどうか、またはMINUSが使用する正しいセットベースの操作であるかどうかはわかりません:

また

改善方法や変更点に関する提案はありますか? どんな助けでも大歓迎です。このような同様のサンプルで UNION、UNION ALL、または INTERSECT をいつ使用するかについて誰かが説明できますか?

また、これらが 2 つの異なるテーブルに必要かどうかもわかりません。このデータベースでは、これらのテーブルのうち 2 つが CUSTOMER (customerid を持つ) と CUSTORDER (customerid と orderid を持つ) です。見たい場合は、テーブル値のスクリーンショットを次に示します: https://imgur.com/a/vHMC4

注: フル クレジットを得るためにのみ、セットベースの操作を使用する必要があります