問題タブ [dynamic-queries]

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 に答える
9288 参照

ibatis - MyBatisのパラメータを介してFROM句を設定する

私の質問を説明するドキュメントには何も表示されていません。それをデプロイすると、私のアプリは完全に機能しません(これについては後ほど詳しく説明します)。私は次のようなことをしようとしています

MyBatisで。列を共有するルックアップテーブルがいくつかあるため、ビューレベルのユーザーが、最終的に使用されるルックアップテーブルを決定します。getLookupRowsを実行しようとするとエラーが発生します

私のマッパーインターフェースは次のとおりです。

したがって、このクエリに文字列を渡そうとしていることがわかります。特別なことは何もありません。次のタスクになるので、特定の列があります。実際には、各ルックアップテーブルの列の1つが一意であるため、適切なspecificColumnを呼び出す必要がありますが、テーブルパラメーターとFROM句が機能するようになれば本当に嬉しいです。

0 投票する
4 に答える
1731 参照

sql - 日付の比較時に予期しない結果を返す動的 SQL クエリ

SQL Server 2008 でストアド プロシージャとして動的クエリを作成していますが、日付 (パラメータとして指定) と日時 (データベースに格納) を比較すると、予期しない結果が得られます。時間部分を考慮せずに2つを比較する方法をいくつか探したところ、次のことがわかりました。

私がこれでやっていることは、指定された日付パラメーターと保存された ScheduledDate が同じであるレコードを見つけようとしていることです (たとえば、 2011 年 2 月 5 日と 2011 年 2 月 5日 11:26:19.157 など、日数に関して) これは私がこれを行うために書いたクエリです:

このクエリにより、その日に訪問が予定されている従業員のすべての ScheduledDates が得られると思います。つまり、ID が 5 と 7 の 2 人の従業員がいて、2011 年 2 月 5 日に ID が 5 と 7 の従業員の 2 つの ScheduleDate エントリが Visit テーブルに存在する場合、このクエリを実行します。ただし、実行すると1行しか返されないようです。(補足として、私が作業している 2 つの ScheduledDate エントリは同じ日にありますが、互いに約 3 時間離れています。数時間は確かにクエリの = を >= 0 または <= 0 に変更すると、期待どおりにより多くの行が取得されますが、奇妙なことに、その特定の日付の単一のエントリしか取得できません。同じ従業員が異なる日に複数の訪問を行っているテーブルには他のレコードがあり、>= 0 または <= 0 を使用すると、それに応じて返されます。たとえば、ID 41 の従業員は 2011 年 10 月 29 日に 3 回訪問しています。 、11-24-2011、および 12-28-2011 であり、DATEDIFF を >= 0 に変更すると、これらの 3 つすべてが返されます。同じ日に訪問を予定しています。ここで私のロジックがどこで間違っているかについて、誰かが洞察を提供できますか? これをテストしているときは、ScheduledDate パラメーターのみを指定していることに注意してください。他のすべてのパラメーターが NULL として挿入されるため、他の IF IS NOT NULL ステートメントはすべて失敗します。>= 0 または <= 0 を使用すると、それに応じて返されます。たとえば、ID 41 の従業員は、2011 年 10 月 29 日、2011 年 11 月 24 日、および 2011 年 12 月 28 日に 3 回訪問し、そのうち 3 回すべてを訪問しました。 DATEDIFF を >= 0 に変更すると返されます。2 人の異なる従業員が同じ日に訪問を予定しているのに、なぜ 1 つのレコードしか返されないのか、まだ混乱しています。ここで私のロジックがどこで間違っているかについて、誰かが洞察を提供できますか? これをテストしているときは、ScheduledDate パラメーターのみを指定していることに注意してください。他のすべてのパラメーターが NULL として挿入されるため、他の IF IS NOT NULL ステートメントはすべて失敗します。>= 0 または <= 0 を使用すると、それに応じて返されます。たとえば、ID 41 の従業員は、2011 年 10 月 29 日、2011 年 11 月 24 日、および 2011 年 12 月 28 日に 3 回訪問し、そのうち 3 回すべてを訪問しました。 DATEDIFF を >= 0 に変更すると返されます。2 人の異なる従業員が同じ日に訪問を予定しているのに、なぜ 1 つのレコードしか返されないのか、まだ混乱しています。ここで私のロジックがどこで間違っているかについて、誰かが洞察を提供できますか? これをテストしているときは、ScheduledDate パラメーターのみを指定していることに注意してください。他のすべてのパラメーターが NULL として挿入されるため、他の IF IS NOT NULL ステートメントはすべて失敗します。2 人の異なる従業員が同じ日に訪問を予定しているのに、なぜ 1 つのレコードしか返されないのかについて、私はまだ混乱しています。ここで私のロジックがどこで間違っているかについて、誰かが洞察を提供できますか? これをテストしているときは、ScheduledDate パラメーターのみを指定していることに注意してください。他のすべてのパラメーターが NULL として挿入されるため、他の IF IS NOT NULL ステートメントはすべて失敗します。2 人の異なる従業員が同じ日に訪問を予定しているのに、なぜ 1 つのレコードしか返されないのかについて、私はまだ混乱しています。ここで私のロジックがどこで間違っているかについて、誰かが洞察を提供できますか? これをテストしているときは、ScheduledDate パラメーターのみを指定していることに注意してください。他のすべてのパラメーターが NULL として挿入されるため、他の IF IS NOT NULL ステートメントはすべて失敗します。

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

c# - C# + Entity Framework + ストアド プロシージャによる動的クエリの構築

ユーザーが各パラメーターに複数の値を持つ複数のパラメーターを選択できる機能に取り組んでいます。エンティティがストアド プロシージャにマップされたエンティティ フレームワークである C# を使用して、アプリケーションでこの機能を設計する方法を見つけようとしています。セキュリティ上の理由により、私のアプリケーションは、ストアド プロシージャのみを持つ代理データベースを介してデータベースにアクセスする必要があります。したがって、私のエンティティは、挿入、更新、選択のストアド プロシージャにマップされます。最終的には、ユーザーが選択したフィルターをストアド プロシージャに渡して、データベースにクエリを実行する必要があります。私が考えた解決策の 1 つは、すべてのデータをビジネス レイヤーに取得し、linq を使用してさらにフィルター処理することです。しかし、これは理想的ではありません。これは、この種の複雑なクエリを実行するのにより適したデータベースよりもメモリ レートでフィルター処理されるデータの量が多いためです。linq を使用して動的クエリを構築するための投稿を見たことがありますが、これらの種類の投稿では、エンティティがテーブルにマップされているため、簡単になります。ここで何か助けていただければ幸いです。ありがとう、サーカル

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

.net - LINQ - 動的な orderby 句が機能しない

次のようなコードがあります。

OrderBy 以外は正常に動作します。生成された SQL コードに orderby 句が含まれておらず、レコードがソートされていません。

何か案が?手伝ってくれてありがとう。

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

grails - namedQueries エラー グレイル

次のようなドメインクラスDefectDataがあります

この種のクエリを試しています。これにより、「テスト」フェーズで検出された欠陥の数を取得できます。

ただし、日付が解析できないというエラーが発生しています

解析不能な日付「3-12」。月と年に基づいてレコードをリストしたいだけです。

問題は何ですか?

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

hibernate - 結合またはサブクエリを使用して SQL クエリを動的クエリに変換する

SQL クエリ (2 つのバリアント) があり、動的クエリで使用する必要があります。

SQL では次のようになります (バリアント 1 // サブクエリ経由):

または、結合とグループを使用した代替クエリ:

どちらの SQL クエリもまったく同じように表示されます。

ここで、そのうちの 1 つを動的クエリとして使用する必要があります。結合を行う方法がわかりませんし、プロジェクションでサブクエリを行う方法もわかりません?!

誰でも私を助けることができますか?THX


custom-sql でこれを行う必要がありました。

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

mysql - $ query-> addExpression()を使用するときに選択されるフィールドの順序を保持する方法

Drupal 7を使用していますが、複数のテーブルで結合する必要があります。組合が機能するためには、いくつかの条件を満たす必要があります。

  1. 同数の列
  2. 同じデータ型
  3. 同じ注文

一部のテーブルには列がないため、これを補うために、次のようなものを追加します$query->addExpression(':field_1', 'field_1', array(':field_1' => NULL));。したがって、この時点で条件1と2は満たされます、選択のフィールドの順序は異なります。

以下の例を参照してください。

そして結果は次のとおりです。

を使用して$query->addExpressionも、フィールドの位置が期待どおりになるとは限らないようです。使用された3番目のクエリのダンプを見てくださいaddExpression。この問題を解決する方法について何かアイデアはありますか?

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

mysql - ユニオンプレースホルダーを使用すると、ユニオンで使用される初期選択の値に置き換えられるようです

これは多かれ少なかれ、このHow to preserve the order of fields to be selected when using $query->addExpression() に関連しています。

私がやっていることはunion、複数のテーブルを作成することです。ただし、値がどのテーブルから取得されているかを知る必要もあります。だから私はちょうどこのようなものを追加します:$query->addExpression(':table', 'table_name', array(':table' => $table_name));

問題は、ユニオンを作成するとすぐに、テーブル名が最初のクエリの名前に置き換えられることです。

以下の例を確認してください。

選択を個別にチェックすると、それらはすべて正常に見え、期待される結果が得られますが、ユニオンを使用するとtable_one、いたるところにしか表示されません。

私はこれでしばらく頭を悩ませてきたので、アイデアがあれば素晴らしいでしょう...

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

asp.net - LINQ vb を使用して複数のキーワードを検索する

複数のキーワードを検索するために変更する必要がある既存のコードがいくつかあります。(ちなみに、私はこれらすべてに慣れていません)

「猫の毛」という条件を入力すると、OR 検索が実行されるように、これを変更するにはどうすればよいでしょうか。そう...t.TopicTitle.Contains("cat") OR t.TopicTitle.Contains("hair") ...。もちろん、動的である必要があります。

私はこれを試しましたが、動作させることができませんでした。

アイデアは、スペースを分割し、where 句に追加し続けることでした。SQL でこれが機能した可能性があることは知っていますが、このシナリオではどうすればよいでしょうか?

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

sql - Sybaseからの不可解なSQLエラー(エラー-680)

PHP内でSybaseSQL-Anywhereデータベースを対象に動的に生成されたSQLクエリを実行しようとすると、次のエラーが発生しました。

Warning: sybase_query(): message: SQL Anywhere Error -680: Invalid expression in WHERE clause of Transact-SQL outer join (severity 16) in /path/to/file.php

SQLクエリ文字列:

私はSQLやデータベースとのインターフェースに完全に慣れていないわけではありませんが、このメッセージは私を困惑させます。句に無効な式があると主張していWHEREますが、クエリがどのように不正に構成されているのかわかりません。私の推測では、エラーにはOR2つの検索結果のとの結合が含まれます。

さらに、これら3つの個別のクエリを実行し、結果を(Excelで)結合することにより、正しい結果のセットを返します。

クエリA:

クエリB

クエリC

私が望む結果を明確にするために:

ここに画像の説明を入力してください

に関するSybaseのドキュメントerror -680は、次のように記載されています。

Transact-SQL構文を使用するクエリのWHERE句の式には、NULLを提供するテーブルの列と、別のテーブルの列を参照するサブクエリまたは式との比較が含まれています。

  1. 元のSQLクエリの何が無効ですか?

  2. 文書化された説明はどういう意味ですか?

  3. 元のSQLクエリを編集して目的の結果を得るにはどうすればよいですか?

このクエリは動的に生成されたため、OR句間のステートメントを変更する方法を知りたいことに注意してください。

ステートメント構造: