問題タブ [outer-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.

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

linq - 結合されたコレクションに関する LINQ の更新

LINQ を使用して、あるリストのオブジェクトを 2 番目のリストのオブジェクトから更新するにはどうすればよいですか? 私の質問は、結合中の LINQ In Line Property Updateと非常によく似ていますが、私の場合、2 番目のリストは親リストよりも小さいという点が異なります。つまり、2 番目のコレクションに対応する更新があるマスター コレクションのメンバーを更新したいと考えています。それ以外の場合は、マスター オブジェクトを変更せずに残しておきます。上記の記事の手法は、2 つのコレクションの内部結合をもたらすようです。

ありがとう

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

mysql - Bで一致しないAのエントリを見つけるための効率的なMySQLクエリ

いくつかのテーブル(製品とサプライヤー)があり、どのアイテムがサプライヤーテーブルにリストされなくなったかを調べたいと思います。

テーブルuc_productsには製品があります。テーブルuc_supplier_csvには、サプライヤ在庫があります。uc_products.modelはuc_suppliers.skuに対して結合します。

サプライヤテーブルで参照されていない製品テーブルの在庫を特定しようとすると、非常に長いクエリが表示されます。一致するエントリのnidのみを抽出したい。sid IS NULLは、サプライヤがないアイテムを特定できるようにするためのものです。

以下の最初のクエリでは、結果(507行)を取得するのにDBサーバー(4GB RAM / 2x 2.4GHz Intel)に1時間かかります。2番目のクエリが終了するのを待ちませんでした。

このクエリをより最適にするにはどうすればよいですか?文字セットの不一致が原因ですか?

私は、次のSQLを使用するのが最も効率的だと考えていました。

このクエリでは、次のEXPLAIN結果が得られます。

ここでは、キーidx_skuとidx_modelが有効であると思っていましたが、そうではありません。これは、テーブルのデフォルトの文字セットが一致しないためですか?1つはUTF-8で、もう1つはlatin1です。

私もこのフォームを検討しました:

EXPLAINは、そのクエリに対して次の結果を表示します。

そして、私は何も見逃さないように、ここにいくつかのよりエキサイティングな詳細があります:テーブルのサイズと統計、そしてテーブルの構造:)

編集:以下のMartinからのいくつかの提案されたクエリのクエリプランを追加します:

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

linq - サブソニックアウタージョイン

SubSonic 3の外部結合ステートメントにバグがあるようです。あるいは、それは私の無知なのかもしれませんが、次のようになります。

と:

0 投票する
6 に答える
274 参照

sql - 外部結合の結果を制限することは可能ですか?

3 つのテーブル間で結合を行う必要があるシナリオがあります。

特性 A または特性 B を持つすべてのユーザーを (1 つの単純な sql で) 検索したい場合、行き詰まっていると思います。

通常の結合を行うと、特性 A を持っていない人は結果セットに表示されず、特性 B を持っているかどうかを確認できません (逆も同様です)。しかし、テーブル 1 からテーブル 2 および 3 への外部結合を行うと、where 句の残りの部分でテーブル 2 または 3 に対する要件を指定していても、テーブル 1 のすべての行が取得されます。

複数の SQL や一時テーブルなどを考え出す前に、このプログラムははるかに複雑です。これは単純なケースです。多くの外的要因に基づいてSQLを動的に作成するため、1つのSQLで機能させようとしています。機能する in または exists の組み合わせがあると思いますが、単純なものを望んでいました。しかし基本的に、外部結合は常にテーブル 1 からすべての結果を生成します。

0 投票する
7 に答える
6209 参照

sql - 内部結合と外部結合の SQL ステートメントを比較する

内部結合と外部結合の違いは何ですか? これら 2 種類の結合の正確な意味は何ですか?

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

java - HQL クエリでの外部結合の使用

HQL と s を使用してクエリを作成しようとしていますが、うまくいきOUTER JOINません。次のマッピングを検討してください

ここで、すべての親とその親の子の数のリストを取得したいと思います。2 人の子を持つ 1 つの親と、まったく子を持たない 1 つの親があるとします。次のような出力が期待されます。

プレーン SQL を使用してもまったく問題ありません。次のような出力を取得します。

ただし、 を使用する場合、親から子へのパスが必要なため、HQL を使用することはできないようですOUTER JOIN。これは明らかに持っていません (また、追加したくない)。

HQLを使用してクエリを機能させる方法はありますか、それとも本当に-信じられませんでした-休止状態の機能がありませんか?

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

sql - あるテーブルから別のテーブルに行を挿入すると、SQL の方が効率的です (外部結合と順次スキャン)

テーブル B からテーブル A に行をコピーする必要があります。要件は、まだ A にない行のみを挿入することです。

私の質問は、次の2つのうちどちらがより効率的かということです。

A)

B)

答えはテーブルのサイズに依存すると思います。しかし、あるアプローチを他のアプローチよりも使用することについて、明白な何かがあるかどうかを知りたかった.

あいまいさを軽減するために、テーブル B の行数が 50K 未満で、テーブル A のサイズが常にテーブル B の 1 ~ 5 倍以上であるとします。

誰かがこれを行うためのより効率的な方法を持っている場合は、教えてください。

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

sql - これは外部結合で記述できますか

要件は、テーブル B からテーブル A に行をコピーすることです。まだ存在しない ID を持つ行のみをコピーする必要があります。

今、説明パスを比較するために外部結合でこれを書き込もうとしていましたが、これを書くことはできません(少なくとも効率的に)。

^ で強調表示された sql がこれをややこしくしていることに注意してください。

0 投票する
3 に答える
326 参照

sql - IN文を含むOUTER JOINでのインデックスの使い方

  • テーブル b のインデックスは次のとおりです: (user, key)

データベースは、:userlist パラメータに単一の値が含まれている場合にのみインデックスを使用します。:users に複数の値が含まれる場合 (内部的に複数の OR ステートメントに展開されますか?)、インデックスは使用されず、(b の) テーブル スキャンが実行されます。

複数の :userlist 値が指定されている場合、データベースがインデックスを使用しないのはなぜですか?

このクエリのより最適なバージョンを知っている人はいますか?

0 投票する
3 に答える
659 参照

join - 複数の行にリンクして 1 つだけを返す左結合

2 つのテーブル (table1 と table2 と呼びます) に参加しようとしていますが、一致ごとに 1 つのエントリしか返されません。table2 には、'y'、'n'、または 'null' のいずれかである 'current' という列があります。2 つのテーブルを結合したままにし、「y」インスタンスと「null」インスタンスを取得するために where 句を配置しました。これらは簡単です。「n」のみを持つ行に結合する行を取得して、「none」または「null」のインスタンスを 1 つ返すには、助けが必要です。ここに例があります

テーブル 1 ID
1
2
3

table2
ID | テーブル1ID | 現在の
1 | 1 | y
2 | 2 | ヌル
3 | 3 | n
4 | 3 | n
5 | 3 | n

現在のクエリは table1.ID=table2.table1ID で結合され、where 句 (where table2.current = 'y' または table2.current = 'null') がありますが、'y' がなく、値は「null」ではありません。

私のようにテーブルに参加するが、このように table1 から 3 つのレコードすべてを取得するクエリを誰かが思いつくことができますか?

クエリ リターン

ID | テーブル2ID | 現在の
1 | 1 | y
2 | null | null | ヌル
3 | 3 | null またはなし