問題タブ [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.
sql - SQL で可変スキーマを使用して複雑な型を永続化するための最も効率的な方法
私がしていること
複合型オブジェクトのバックエンド ストレージ メカニズムを提供する SQL テーブルを作成しています。最高のパフォーマンスでこれを達成する方法を決定しようとしています。複合型の個々の単純型値 (たとえば、Address 複合型の City の String 値) に対してクエリを実行できる必要があります。
複合型の値を XML として 1 つのレコードに格納できると当初は考えていましたが、この設計の検索パフォーマンスが気になります。 データベース アクセス層について何も変更せずに、その場で可変スキーマを作成できる必要があります。
今いる場所
現在、以下の表を作成しようと考えています。
これらのテーブルから、クエリを実行するときに、値テーブルで一連の自己結合を行います。DocumentId でオブジェクト全体を取得したい場合は、複合型の非正規化されたデータ テーブルを模倣するビューを作成するための汎用スクリプトが必要です。
知りたいこと
私がしようとしていることを達成するためのより良い方法があると信じていますが、さまざまな SQL 手法の相対的なパフォーマンス上の利点については、私は少し無知です。具体的には、次のパフォーマンス コストがわかりません。
SQL のこれらのパフォーマンスの問題に関する情報やリソース、およびこの一般的な問題に効率的に取り組む方法についての推奨事項をいただければ幸いです。
例えば、
これは私が現在やろうとしていることの例です。
次のようなC#クラスのアドレスがあります
インスタンスはから構築されますnew Address{Line1="17 Mulberry Street", Line2="Apt C", City="New York", State="NY", Zip="10001"}
その XML 値は次のようになります。
上記の db-schema を使用すると、アドレス xml スキーマの XSD 定義を持つ Schemas テーブルに単一のレコードが作成されます。このインスタンスには、Schemas テーブルの Address レコードの SchemaId に割り当てられた uniqueidentifier (Documents テーブルの PK) があります。Values テーブルには、この Address を表す 5 つのレコードがあります。
それらは次のようになります。
バウンティが追加されました...
私の目的は、完全に検索可能で、アプリケーション層から生成されたデータ スキーマを持つデータ アクセス層をアプリケーションに与えるために必要なリソースを取得することです。新しい集約ルートをドメイン モデルに追加します。
私は、SQL 以外の .NET 互換テクノロジを使用する可能性を受け入れますが、そのような提案が検討されるためには、十分に実証されている必要があります。
ruby-on-rails - Rails:自己参照has_manyモデルはどのように機能しますか?
そこで、ユーザーが「フォルダー」内のオブジェクトをグループ化できるようにするアプリに取り組んでいます。基本的に:
User has_many :foos
Foosはフォルダ内にある必要はありませんが、フォルダ内にある可能性があります。その場合:
Folder has_many :foos
とFoo belongs_to :folder
ここで、フォルダをネストできるように設定できるようにしたいと思います。これは…のようなものだと思います
Folder has_many :folders
このような自己参照関係は大したことではないと聞いていますが、実際にはどのように機能するのかわかりません。これがモデルでどのように宣言されるのか、データベースでどの列を提供する必要があるのかを理解できませんでした。
誰かが例を提供できますか?また、アプリでこの種の関係を設定することについて提供できる可能性があることを学んだ提案/ヘッズアップ/警告/レッスンも評価します。
ありがとう!
mysql - MySQL を同じテーブルに結合する
次の関連フィールドを持つ 1 つのテーブル (ステージングと呼ばれます) があります。
bundle_code が 10 の bundle_id を検索し、同じ bundle_id で product = H の他のレコードと、同じ bundle_id で product != H のレコードを最大 2 つ取得する必要があります。これを実行しようとしています。すべて 1 つのクエリで、bundle_id ごとに 1 つの行を返します。そのため、bundle_id のリストがあり、それぞれにその bundle_id に関連付けられたすべての製品と ID が含まれています。
私が思いついた最高のものはこれです:
合計結果が 4 つある場合、これは正常に機能しているように見えますが、結果が 3 つある場合は、1 つのデータ セットが重複しています (この場合は ID 1691)。
これを防ぐために追加の WHERE 句を追加すると、代わりにゼロ行が返されるため、JOIN 構文がどこかずれていると考えられます。何か案は?
mysql - MySQLの結果から同等であるが重複していない行をフィルタリングする
私の友愛関係を促進するために、私は人々がお互いをどれだけよく知っているかを評価できるシステムを設計しようとしています。そうすれば、それはお互いを最も知らない人々と一致します。評価の表は次のようになります。
各ペアの評価の平均を選択するクエリを設計したいと思います。これまでのところ私はこれを持っています:
これはほとんどの部分で機能しますが、冗長データが含まれています。
1行目と2行目、3行目と4行目、5行目と6行目は、重複していませんが、基本的に同じであることがわかります。それらの冗長な行を除外する方法はありますか?
mysql - MySQLクエリの質問
航空会社のルートデータを含むデータベースがあります。属性には、sources_airport_ID、destination_airport_ID、airline(送信元から宛先へのルートをサポートする)があります。テーブルに自己参加して、同じルート(つまり、同じsources_airport_IDとdestination_airport_ID)を持つ航空会社を検索しようとしています。
私は次のようにクエリを使用していました:(テーブル名=ルート)
このクエリを実行すると、最大実行時間が300秒を超えたというエラーが表示されます。この目的で正しいクエリを使用しているかどうかはわかりません。誰かがクエリを手伝ってくれますか?データベースとしてxamppを使用しています。
前もって感謝します!
編集:私の主キーはIDで、これは単なる自動インクリメント値です。ルートテーブルには64,114レコードがあります。
sql - PLSQL での自己結合
personid 列と licensetypeid 列を持つテーブル P があります。
各個人は複数のライセンス タイプを持つことができ、その個人 ID のテーブルに行を追加できます。
personid が 1 と 5 の両方の licenseid を持つ行を見つける必要があります。
私は書くことができません:
これを行うには、自己結合を使用する必要があると聞きました。この問題を解決するために自己結合を行うにはどうすればよいですか?
sql-server - 自己結合と集計を使用した UPDATE
自己結合と集計を使用してテーブルを更新しようとしています。
たとえば、テーブルには次の列があります。
店、商品、価格、低価格、低価格店
と を入力する必要がlowprice
ありlowprice store
ます。
は次のlowprice
ようになります。
は各アイテムlowprice store
のストアになります。min(price)
また、その一歩を踏み出せれば幸いです。2 つの店舗が同じ商品を提供しているとしlowprice
ます。その場合、値はlowprice store
「store a/store b」になりますが、この部分はそれほど重要ではありません。
SQL Server を使用しています。
jpa - JPAで自己結合を実装するには?
次のようなテーブルがあります。
このテーブルのエンティティを実装しようとしています。コード スニペットは次のようになります。
しかし、getParentまたはgetChildrenを使用すると、常に失敗しますか? 誰か私に何か提案をしてもらえますか?
mysql - MYSQL SQL (自己) 結合?
このサンプル データセットの使用:
3列のテーブルを探しています。
元の列からの Desc としての「Id」の順序。
CCC が同じである列 A の前または次の行 ID としての列 B "Id2"。
また
また
結合されたテーブルにオートクリメント列を追加してから、1、2、3 行を上下に使用できますか? id2 は、この autocrement 行に基づいていますか?
mysql - 2 番目のテーブルを 1 つの行に「フラット化」する必要がある 2 つのテーブルを (1-M の関係で) 結合します。
次の表を考えます。
学生
入学
以下をお願いします
注 1: mysql が動的な列を持つことができないことはわかっています (間違っている場合は訂正してください!)。次のように始まるクエリに満足しています。
決まった数のコース(正確には4つ)があるので、これには満足しています。理想的には、動的にしたいと思います。つまり、SELECT 句で各コースを手動で記述する必要はありません。
注 2:これには mysql pure が必要です。PHP に頼りたくありません。
データベースは現在、10000+ * 4 の登録者を持つ 10000+ の学生で構成されています (正確に 4 つのコースがあり、すべての学生が 4 つのモジュールすべてに参加しているため)。
注 3: Student.user_id はインデックス化されており、enrollment.enrollment_id、enrollment.student_id、および registration.course_id もインデックス化されています。