問題タブ [self-join]
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.
c# - Hibernateマッピング自己結合テーブル?
非常に単純かもしれませんが、何かが足りないと思います。自己結合テーブルUnitsがあり、すべてのユニットにメインユニットがあります:

次のようなクエリを実行できるようにします。

テーブルunitsは次のクラスにマップされます。
.hbm マッピング ファイルを次のように使用します。
これらのエンティティを次のコードでテストする場合:
次の例外がありました。
問題はMain_Unit、エンティティのプロパティがUnitそれ自体を参照しているため、ここで何が欠けているのでしょうか??、ランクを適用するために再帰的な SQL CTE のようなものをどのように記述できますか?他のより複雑な自己にも同じ問題があるためですより複雑なクエリで結合されたテーブル。
sql - RailsのLEFTSELFJOIN-スレッドベースのプライベートメッセージング
Railsに1対1のスレッドベースのプライベートメッセージングを実装しようとしています。
以下は私のメッセージモデルです:
2人のユーザー間の新しい会話用に新しいスレッドを作成します。
次のクエリを使用して、特定のユーザーの各スレッドの削除されていない最新のメッセージを検索しています(例:id = 1):
これをRailsモデル/コントローラーに実装し、対応するビューに結果を表示したいと思います。
誰かがメッセージの配列でこれらの結果を取得する方法についてガイドできますか?前もって感謝します!
mysql - 自己結合に関する SQL の質問
MySQL の SQL 結合について質問があります。
次のテーブルAと親子関係があるとします。親 ID を指定して、すべての子 (葉ノードまでの子のサブ子を含む) を取得するにはどうすればよいですか?
上記の表から、親 (1) を指定した場合、親 id(1) を指定すると、すべての階層の例が得られるようにクエリを実行する必要があります。
制限の 1 つは、データ モデルが JBPM データベース テーブル (オープン ソース) であるため、データ モデルを変更できないことです。サブプロセス (ファンアウト プロセスごと) の JBPM グラフに ProcessInstancelog テーブルの機能を追加しています。
postgresql - postgis の高度な (?) 選択クエリ
問題: 半径 1 km 以内に少なくとも 2 つの薬局と 2 つの教育センターがあるテーブル内の建物ごとに、すべての POI (薬局、商業センター、医療センター、教育センター、警察署、消防署) を選択する必要があります。 ) は、それぞれの建物から 1 km 以内にあります。テーブル構造->
建物 (ID シリアル、名前 varchar )
poi_category(id serial, cname varchar) --cname はもちろんカテゴリ名です
poi(id serial, name varchar, c_id integer)-- c_id は poi_category(id) を参照する FK です
すべての座標列は地理ではなくジオメトリ型です (geom と呼びましょう)
これが私がそれを行うべきだと思った方法ですが、この問題の最適な解決策は言うまでもなく、それが正しいかどうかもわかりません
これは私が必要とするものに行く方法ですか?パフォーマンスの観点から、どのソリューションが優れているでしょうか? 最もエレガントなソリューションはどうですか? ここにも投稿しました: http://gis.stackexchange.com/questions/11445/postgis-advanced-selection-query
sql - 自己結合テーブルで列をマッピングする方法!
親/子テーブルがあり、その PK と FK を新しい値に更新したいと考えています。問題は、古い親 ID が古い ID と一致する新しいものと同期する必要があることです。それで:
このデータを一時テーブルとして持っています:
次のように NewParentID を更新する必要があります。
mysql - mysqlは同じテーブルの列を比較します
私はmysqlデータベースに次のようなテーブルを持っています
1日に何回食べたかを比較してスプレッドシートに入れるように選択する方法を見つけようとしています。
mysql - MySQLを使用してAmazonのSimpleDBと同様の属性を選択します
申し訳ありませんが、これにタイトルを付けるためのより良い方法は考えられませんでした。AmazonのSimpleDBでは、アイテムは同じ列に複数の値を持つことができるため、求められているすべての属性を持つアイテムのみを選択することができます。
MySQLで、次のテーブル( "Photo_Attributes")に、別のテーブル( "Photos")に含まれる写真の属性が無制限に含まれ、2つのテーブルがItem_Numberで結合されているとします。
そして、色が赤でサイズが中程度の帽子を見つけたいとしましょう。この場合は、「OPQ」ではなくITEM_ID「ABC」になります。
次のクエリでは、各行に1つの属性と1つの値しか含まれていないため、結果は得られません。
SELECT FROM Photo_Attributes WHERE OBJECT ='hat' AND(Attribute ='Color "AND Value ='Red")AND(Attribute ='Size' AND Value ='Med');
また、このクエリは、必要以上の行を生成します(つまり、すべての赤とすべての中型のアイテム)。
SELECT FROM Photo_Attributes WHERE OBJECT ='hat' AND(Attribute ='Color "AND Value ='Red")OR(Attribute ='Size' AND Value ='Med');
これを書くための最良の方法は何ですか-そして-SELECTステートメントでJOINを使用せずにそれを行う方法はありますか?クエリはプログラムで(nodejsで)生成され、属性と値のペアの数は1から数の範囲になる可能性があるため、後者については疑問に思っています。レコードセットからカリングするネストされたクエリも使用できると思いますが、それも同様に非効率的です。
php - エイリアスを使用したMySQLクエリの結果を出力する方法は?
2つのプライマリMySQLテーブル(プロファイルと連絡先)があり、多くの補足テーブル(プレフィックスはprm_)があります。これらは、PHPを介してアクセスおよび操作されます。
この例では、所有者IDとブリーダーIDを取得するプロファイルテーブルをクエリしています。これは、所有者とブリーダーに関する情報が保持されている連絡先テーブルに対して参照されます。
結合とエイリアスに関する別の質問について、ここで大きな助けを得ました。ここでも、次のクエリが提供されました。残念ながら、実際に結果をエコーするのは非常に困難です。自己結合とエイリアスを扱うすべてのサイトは、クエリの素敵な例を提供しますが、「そしてこの出力など」にスキップしてください。どのように出力しますか????
これと相まって、次のPHPがあります。
連絡先(性別、色など)を除くすべての詳細は正常に返されます。および変数は空です$owner。$breeder
私のためにこれを解決するのにどんな助けでも大いに感謝されるでしょう。
編集:私の最後の作業クエリ:
次に、次のように出力できます。
みんなに感謝します!
sql-server-2005 - 自己結合を使用したSQLクエリ
次のデータを含むテーブル(TableA)があるとします。
ステータスが2のレコードを除いて、ステータスが2のすべてのレコードを返すにはどうすればよいですか。ただし、ステータスが2の後に1のレコードが続く(ステータスが2のレコードはこれ以上ありません)。
したがって、たとえば、過去にREC001のステータスが2であったため、クエリはREC002とREC003を返す必要がありますが、後日、ステータスが1のレコードID4に置き換えられました。後のある時点で、ステータス2のREC001に別のレコードが追加された場合、これは結果セットに再び存在するはずです(ステータス1のそれ以降のレコードがないと仮定)。
これをいじる私の弱い試みは次のとおりです。
これはちょっと機能しますが、t1.Id=t2.Idの値を返します。where句を使用してこれを除外できることはわかっていますが、テーブルにさらに多くのレコードを追加すると、再び失敗します。例えば;
どんなアイデアでも大歓迎です。
編集:私は与えられた2つの答えを試しました、そしてどちらも私が必要なものを正確に私に与えませんでしたが、彼らは確かに私を正しい方向に向けました。与えられた答えを使用して、私は私が必要とすることをしているように見える次のことを思いついた。
ここで確認できる唯一の欠点は、タイムスタンプがまったく同じ2つのレコードがある場合、結果セットに2回表示されることです。たとえば、Id 21が22として再現された場合、2回表示されます。実際には、タイムスタンプは常に一意であるため、これは実際の問題ではありません。
sql - 遅い自己結合削除クエリ
このクエリよりも簡単ですか?
matchesはい、明らかにそうです...テーブルが非常に大きい場合、上記のクエリのパフォーマンスは非常に悪いためです。
matches約 2 億 2000 万レコードです。この DELETE クエリにより、サイズが約 15,000 レコードに減少することを願っています。クエリのパフォーマンスを向上させるにはどうすればよいですか? 両方の列にインデックスがあります。UID と MatchedUID は、この InnoDB テーブルの 2 つの列のみであり、どちらも INT(10) 型であり、符号なしです。ラップトップ (i7 プロセッサ) でクエリが 14 時間以上実行されています。