問題タブ [sql-generation]
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.
sql - SQLジェネレーターを作成する場合、何を読む必要がありますか?
間もなく、メタデータを取得し、そこから動的SQLを生成するコンポーネントを作成する予定です。ほとんどの場合、SELECT、INSERT、UPDATE、DELETEの話をしていますが、CREATE /ALTERTABLEステートメントをいくつか含めることも可能だと思います。
既存のORMソリューションは法案に適合しないと確信していますが、それ以外の点では、どこでどのように詳細がまだ少し曖昧です。
私は他の開発者と同じようにSQLステートメントを書くことができ、過去にNHibernateを少し使用したことがありますが、データベースやORMの背後にある理論についてはほとんど何も知りません。準備作業を行いたいので、推奨される読み物やコードを探しています。
ちなみに、私のコーディング環境は.NET(C#)とSQLServerです。
hibernate - Hibernate でビルド時に JPA Entity CRUD 操作に一致する SQL クエリを生成する方法
JPA アノテーション付きエンティティが与えられた場合、CRUD 操作 (EntityManager に対して実行される) のために Hibernate によって実行されるクエリのリストを (実行前に) 生成することは可能ですか? 名前付きクエリの場合、org.hibernate.hql.QueryTranslator を使用して可能です
Hibernate API へのポインターは高く評価されます。
php - Doctrine SQL/テーブル生成の失敗
YAML スキーマを使用して以前に作成した一連のモデルから Doctrine に SQL を生成させようとしています。マニュアルにある以下のコードを使用すると、出力は一連のクエリになるはずです。
ただし、このコードの結果は次のとおりです。
前に述べたように、SQLクエリを含む文字列を返す必要があります。
私も次のことを試しました:
しかし、それも返します:
マニュアル、API リファレンス、または Doctrine コア ファイルで解決策を見つけることができませんでした。ここの誰かが知っていることを願っています。
前もって感謝します。
更新: A または B で始まるテーブル名がないため、この(古い?) バグが原因ではありません。
更新:私の bootstrap.php は次のようになります。
更新:行を変更しました:
に:
しかし、の出力
はまだ空の配列です。
mysql - SQL::Abstract を使用して SQL クエリを生成するにはどうすればよいですか?
SQL::AbstractWHERE
を使用してこのクエリの句を生成するにはどうすればよいですか:
SELECT COUNT(*) FROM table WHERE id = 111 AND NOT FIND_IN_SET(type, '1,2,3,4') AND status = 'pending';
のような条件を含める適切な方法は何WHERE FIND_IN_SET(type, '1,2,3,4')
ですか?
sql - 2つの列から最小値と最大値を見つけます。最小から最大までの日付を生成
SQLServerDBにテーブルがあります。
次を返すT-SQLクエリを作成する必要があります。
結果セットのエントリ数は、DBのテーブルの「Open_date」列と「Close_date」列の両方の最小値と同じ列の最大値の間の月数に等しくなります。問題は、2つの日付列から最小値と最大値を見つけ、最小から最大までの日付を生成し、この一時テーブル(またはそれが何であるか)を使用して、一時テーブルからのすべての日付のオープンエントリとクローズエントリの数をカウントする方法です。
c# - EntityFrameworkのLINQパーサーが外部で定義された述語を異なる方法で処理するのはなぜですか?
私はMicrosoftのEntityFrameworkをORMとして使用していますが、次の問題を解決する方法を考えています。コレクションから、今日よりも大きいProduct
オブジェクトをいくつか取得したいと思います。(これは問題全体の簡略版です。)Products
Product.StartDate
私は現在使用しています:
これを実行すると、ToList()
たとえばクエリで使用した後、機能し、作成されたSQLは効果的に次のようになります。
ただし、保守性を高めるために述語を関数に移動したいので、これを試しました。
これは、同じセットを返す限り、コードの観点からも機能しますProduct
が、今回作成されたSQLは次のようになります。
フィルタはSQLServerからクライアントに移動されるため、効率が大幅に低下します。
だから私の質問は:
- なぜこれが起こっているのですか、なぜLINQパーサーはこれらの2つの形式をそれほど異なって扱うのですか?
- フィルタを分離してサーバー上で実行することを利用するにはどうすればよいですか?
sql - "Business Objects" はどのように SQL を生成しますか?
Is there a set of rules that Business Objects uses to generate SQL? I have just run into situation where the order of joins actually seriously affected the performance and it would be really nice to know what parameters does BOBJ use to decide how to order the tables.
ef-code-first - EF Code First は、モデルに存在しなくなった余分な列をクエリに追加します
これはSOに関する私の最初の質問です。
ORM として EF Code First を使用し、バージョン移行のために FluentMigrator を使用している ASP.NET 4.0 MVC3 プロジェクトがあります。そして、次のような Message エンティティ クラスがあります。
カスタム マッピングが定義されておらず、MSSQL Server 2012 データベース テーブル メッセージ:
Link_Id、Collection_Id、および MessageType 列は、TPH 継承を行いたいため、そのテーブルにあります (実際には、TPT 継承を行い、TPH に切り替えました。問題は解決すると思いましたが、解決しませんでした)。
今のところ、次のような LinkMessage および CollectionMessage クラスが必要です。
したがって、問題は次のとおりです。リンクナビゲーションプロパティを削除し、プロジェクトを再構築し(データベースを再作成するなど)、単純なクエリを実行すると、継承が定義されていない(つまり、メッセージエンティティのみが存在する)場合でも、var a = DBContext.Messages.ToList();
EFは次のクエリを生成します:
Link_Id がまだ含まれているのはなぜですか? それはもはやモデルではありません。これにより、継承で問題が発生します。上記のサブクラスで TPH (または TPT) 継承を行うと、アプリは「列名 'Link_Id1' が無効です」というエラーで失敗します。Link_Id1 の理由 これはどのように起こりますか?私は完全に混乱しています。「Collection_Id」列は正常に動作します。これら 2 つの列は同一です。データベースを再作成しようとし、アプリのすべてのプロセスを強制終了し(PCを再起動しても)、以前のリビジョンをロードしようとし、そこに Message.Link_Id プロパティを削除し、データを使用して試行し、データなしで試行しました-同じ動作。私は何かをグーグルで検索しようとしましたが、実際には適切な検索クエリを作成する方法さえ知らず、行った検索でも何も得られなかったため、何も得られませんでした.2日目を費やしています...
以下は、彼らが生成しているクエリと SQL です。
Link_Id および Link_Id1 列を照会するのはなぜですか? 誰か助けてください、何が足りないのですか?
UPD:カスタム DBInitializer を削除し、Code First で DB を作成すると、「Messages」テーブルに追加の列「Link_Id1」が作成されます。
sql - ランダムデータSQLサーバー2008の生成(firstName姓アドレスなど..)
いくつかのテストを行う必要があるため、400000 レコードのデータベースを生成する必要があります
私は簡単な方法でそれを行いました
私の問題は、ある種の一意の FirstName、Surname、および Address をどのように生成するかです。
サードパーティのツールは使用できないので、紹介しないでください。
お時間をいただきありがとうございました