問題タブ [left-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 投票する
4 に答える
1866 参照

c# - 集約SQLを使用して左結合をLINQクエリとして最もエレガントに表現するにはどうすればよいですか?

SQL:

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

sql - SQL クエリ - 完全一致が存在しない場合にのみ Like を使用しますか?

現在使用しているクエリに問題があります

ただし、最初に完全に一致しない場合にのみそれを使用する必要があることを発見しています。何が起こっているかというと、 の使用によりクエリが二重に浸されているためLIKE、最初に完全一致をテストすると、二重の浸しの問題が回避されます。誰かが私にさらなるガイダンスを提供できますか?

0 投票する
9 に答える
1982 参照

sql - Oracleの結合(左外側、右など:S)

「お気に入りのプログラミング漫画」が何であるかを知る以外に、stackoverflowが役立つことはわかっていました:P

これは、 Bill Karwinによって受け入れられた回答です。

助けてくれてありがとう(私はあなたに二重投票したい)

私のクエリは次のようになりました(これが本当のクエリです)

あとは、人間が読めるレポートを作成するために、他のテーブルと結合する必要があります。


元の投稿

こんにちは。

6時間くらい悩んでいます。DBクエリを使用するようになりました(私の長年の宿敵)

次のようないくつかのフィールドを持つデータテーブルがあります。

チケットの履歴を追跡するために使用されます

識別子: ( NAF0000001 ) のような顧客 ID です。

activity : チケットがどこにあるかの fk です (新規、進行中、拒否、クローズなど)

参加者: その時点でチケットに参加している人の fk です。

closedate : そのアクティビティが終了した日付です。

編集:終了日ではなく「完了日」と言うべきでした。これはアクティビティが完了した日付であり、チケットがクローズされたときは必要ありません。

たとえば、典型的な履歴は次のようになります。

参加者 1=ジョン、2=スコット、3=マイク、4=ロブ

および活動 1=新規、2=進行中、3=承認待ち、4=終了

など。そして、他の何十もの無関係な情報。

さて、私の問題は次のとおりです。

チケットがいつオープンされ、いつクローズされたかを知ることができるクエリを作成することができました

それはこのようなものです:

しかし、どのチケットがクローズされておらず、誰が出席しているのかわかりません。

これまでのところ、次のようなものがあります。

つまり、開始した ( new = 1 ) が閉じていない ( closed = 4 ) すべての人を教えてください。

しかし、ここでの大きな問題は、チケットを開いた参加者を出力することですが、それに参加している参加者が必要です。そこで、「進行中」のアクティビティをクエリに追加します。

しかし、「新規」にあるすべての行が「進行中」であるとは限らず、そのクエリではそれらすべてを削除します。

必要なのは、すべての「進行中」の参加者を表示することです。チケットが「進行中」でない場合は、空として表示されます。

のようなもの

この場合

NA002、NA003、NA004は「新規」のため、参加者は表示されません

その間

NA005 と NA006 は "inprgress (act = 2 )" であり、rob (参加者 4 ) が参加しています。

だから、左外部結合と呼ばれるものがあったことを覚えていますが、私はそれを決して理解していません。私が知りたいのは、「進行中」および「新規」であり、閉じられていない識別子を取得する方法です。

少し休むと頭がすっきりするのではないでしょうか。誰かがそれを行う方法を知っていれば、私はそれを感謝します。

ところで、私は試しました:

しかし、前と同じ結果が得られます(「新しい」レコードのみをドロップします)

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

sql - LEFT JOIN SQL クエリの WHERE に関するヘルプ

ユーザーがドキュメントをダウンロードしたかどうかを示す列を含むクエリを作成しようとしています。次の列を持つ HasDownloaded というテーブルがあります: id、documentID、memberID。ユーザーが特定のドキュメントをダウンロードしたかどうかを調べるのは簡単です。しかし、結果が次のようになるクエリを生成する必要があります。

ID はそれほど重要ではありません。私が興味を持っているのは、ドキュメントがダウンロードされているかどうか (NULL かどうか) です。

これが私のクエリです:

問題は、HasDownloaded テーブルに指定されたユーザーのエントリが存在する場合にのみ、値が返されることです。これを単純にして、HasDownloaded にダウンロード済みのドキュメントのエントリのみを保持したいと考えいます。したがって、ユーザー 1 が abc、bbb、および ccc をダウンロードした場合でも、結果のテーブルに ddd と eee が表示され、ID が NULL になるだけです。しかし、WHERE 句は、エントリが存在する値のみを提供します。

私は SQL の専門家ではありません。ここで必要なものを提供してくれる演算子はありますか? 別のアプローチをとるべきですか?それともこれは不可能ですか?

0 投票する
5 に答える
4355 参照

sql - 興味深い多対多のSQL結合

関連する 3 つのテーブル "A(id, val)"、"B(id, val)"、および値が "AB(aid, bid, val)" のリンク テーブルがあります。

B に対してクエリを実行して A の値を取得しています。たとえば、次のようになります。

すべての A には多くの B があり、すべての B には多くの A があります。

そして、私がバラバラになっているキャッチは、AB.valが特定のA/Bペアの最大値である場合にのみクエリが行を返すように、セットをフィルタリングする必要があることです

たとえば、データがある場合:

B

AB

AB の最初と最後の行のみを選択したいと思います。これらはそれぞれの A の最大値であり、B.val = 'foo' に対してクエリを実行して最初の行のみを返すことができるためです。AB テーブルの max val 行のみを制約する方法についての手がかりがありません。

私が得ることができた最高のものは

しかし、これはうまくいきません。まず、アプローチが間違っているように感じます。次に、悪い入札値を返します。つまり、サブクエリから返される入札は、必ずしも max(val) と同じ行からのものであるとは限りません。これは、列が照合またはグループ化に指定されていない場合に返される値の選択が定義されていないという既知のグループの問題であると思います。

上記のいくつかが理にかなっていることを願っています。私はこれについて過去数時間壁に頭をぶつけていました。どんな助けでも大歓迎です。ありがとう。

(疑問に思われている方のために説明すると、これの実際の使用は Dictionary バックエンドであり、A は単語テーブル、B は音素テーブルです。AB は「位置」列を持つ WordPhoneme テーブルです。クエリは、で終わるすべての単語を検索することです。指定された音素 (音素とは単語の音であり、使用法は国際音声アルファベット に似ています)

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

vb.net - Linq から Sql: 複数の左外部結合

LINQ to SQL を使用して複数の左外部結合を使用する方法を理解するのに苦労しています。1 つの左外部結合の使用方法を理解しています。私はVB.NETを使用しています。以下は私のSQL構文です。

T-SQL

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

sql - 左外部結合 (3 つのテーブル間の結合)?

データを取得する必要があるメインテーブルがあります。フィールドが 40% の確率で一致する左外部結合があります。そして、テーブル A のデータを一致させる必要がある別の結合があります。

これは疑似コードの SQL です。このクエリは機能しません。

-- やりたいのにうまくいかない部分です。AND H.COL3 = A.STATE????

IBM DB2 を使用しています。

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

mysql - MySQL LEFT JOIN の問題 - LEFT 列がありません

カスタム プロファイル フィールドと (オプションの) 対応する値を表示するために使用される SQL クエリに問題があります。

私が使用しているSQLクエリは次のとおりです。

私が抱えている問題は、対応するprofile_valuesレコードのない列が表示されるべきときにまったく表示されず、空の値だけが表示されることです。

どうもありがとう!

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

python - Postgres-欠測データのカウントが0の行を返す方法は?

数年間(2003年から2008年)、データ(日付)が不均一に分散しています。PostgreSQL 8.3( http://www.postgresql.org/docs)でサポートされている間隔(日、週、月、四半期、年)のいずれかでデータをグループ化して、特定の開始日と終了日のセットのデータをクエリしたい/8.3/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC)。

問題は、次のように、一部のクエリで必要な期間にわたって継続的な結果が得られることです。

ただし、次のように、データが存在しないため、一部の間隔が欠落しています。

必要な結果セットは次のとおりです。

欠落しているエントリのカウントは0です。

Stack Overflowに関する以前の議論を見たことがありますが、私のグループ化期間は(日、週、月、四半期、年)のいずれかであり、アプリケーションによって実行時間を決定したため、問題は解決しないようです。したがって、カレンダーテーブルまたはシーケンステーブルとの左結合のようなアプローチは、私が推測するのに役立ちません。

これに対する私の現在の解決策は、カレンダーモジュールを使用してPython(Turbogearsアプリ内)でこれらのギャップを埋めることです。

これを行うためのより良い方法はありますか?

0 投票する
12 に答える
1802896 参照

sql-server - SQL Server での LEFT JOIN と LEFT OUTER JOIN の比較

LEFT JOINとはどう違いLEFT OUTER JOINますか?