問題タブ [full-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 投票する
5 に答える
37975 参照

c# - Linqで完全外部結合を行う方法は?

正確に最適に設計されていないデータベースを継承したため、一部のデータを操作する必要があります。私がしなければならない種類のことのより一般的なアナロジーを与えましょう:

Studentテーブル、StudentClass彼が参加したすべてのクラスの記録を保持するテーブル、およびこの生徒を教えたすべての教師を格納するテーブルStudentTeacherがあるとします。はい、私はそれがばかげたデザインであることを知っています、そしてクラステーブルに先生を保存することはより理にかなっています-しかしそれは私たちが取り組んでいるものです。

今度はデータをクリーンアップしたいと思います。生徒に教師がいるがクラスがない場所、またはクラスはあるが教師がいない場所をすべて見つけたいと思います。したがって、SQL:

Linqでそれをどのように行いますか?

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

sql - 完全な外部結合を使用せずに完全な外部結合を行う方法

先週、sybase12が完全外部結合をサポートしていないことに驚きました。しかし、完全外部結合は、同じSQLの右外部結合と結合された左外部結合と同じである必要があることに気付きました。これが当てはまらない理由を誰かが考えることができますか?

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

sql - 共通のテーブルに参加して、別のテーブルで拡張するためにFULL OUTER JOINを取得するにはどうすればよいですか?

私はこの問題への答えを求めてStackOverflowとGoogleを精査しました。

Microsot SQLServer2008ビューを作成しようとしています。ストアドプロシージャではありません。関数ではありません。単なるクエリ(つまりビュー)。

私は3つのテーブルを持っています。最初のテーブルは、「CompanyID」などの共通キーを定義します。他の2つのテーブルには、「EmployeeName」などの一般的なフィールドがあります。

WHERE句に「WHERECompanyID=12」と表示されている場合、次のような単一のテーブル結果が必要です。

私は次のような完全な外部結合を試しました:

一致した1つのテーブルからのみNULLを取得していますが、他のテーブルの展開は取得していません。上記のサンプルでは、​​基本的に1行目と3行目のみを取得しており、2行目は取得していません。

誰かが私がこのクエリを作成するのを手伝って、これがどのように正しく行われるかを教えてもらえますか?

ところで、私はすでに非常にきれいに見え、メモリ内のテーブルにデータを入力するストアドプロシージャを持っていますが、それは私が望んでいることではありません。

ありがとう。

- 編集:

これは、現在機能していないものの完全なサンプルです(「誰か2」と「誰か3」が欠落しています。

結果:

私が欲しいもの:

0 投票する
10 に答える
260913 参照

sql-server - SQL Server: CROSS JOIN と FULL OUTER JOIN の違いは何ですか?

SQL Server の CROSS JOIN と FULL OUTER JOIN の違いは何ですか?

それらは同じですか?説明してください。これらのいずれかをいつ使用しますか?

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

sql - 私たちを取得します。一方のテーブルに英国、もう一方のテーブルにcnとjpがありますが、両方にbrはありません。

国の言語では、

国名で、

「内部結合は、結合されたテーブルから一致する行の組み合わせを選択することによって結果を生成します。ただし、一致しないものは見つかりません。」

「左結合は、左のテーブル(最初に名前が付けられたテーブル)を参照テーブルとして扱い、その行が右のテーブルの行と一致するかどうかに関係なく、そこから選択された各行の出力を生成します。」

私たちを取得するには、uk、cn、jpを取得しますが、brは取得しません。

  • 内部結合は不一致を見つけることができません(br <> brは機能しません)。
  • 外部結合は、すべてを1つ(usとuk)に、またはすべてをもう1つ(cnとjp)に検索します。

2つの外部結合を使用していますか?

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

sql - 親子監査テーブルを結合するための Postgre SQL

「監視対象テーブルごとに 1 つの監査テーブル」設計を使用しています。ただし、この場合、テーブルには監視する必要がemp(PARENT)ある子テーブルがあるため、 と があります。emp_addressemp_auditemp_addr_audit tables

postgres audit SQL : レポート目的で PARENT テーブルと CHILD テーブルを結合する方法。

永続化のために hibernate(java) を使用しており、hibernate は更新操作で列が変更されたテーブルのみを更新します。これを考えると、emp_audit テーブルの 1 行に対して emp_addr_audit テーブルに複数 (たとえば 5) 行ある可能性があります。また、その逆も同様です。

レポートには、トランザクション (変更) ごとに 1 行が必要です。レポートには次の列があります

empname, line1, operation(insert/delete/update), updatetime

何が必要かを理解するために、2 つのシナリオを考えてみましょう。

  1. 最初のトランザクションでは、emp属性のみが作成されます。次に、別のトランザクションで、対応する行emp_addrが作成されます。これで、emp_auditテーブルに 1 行、テーブルに 1 行ができましたemp_addr_audit。レポートには 2 行 (トランザクションごとに 1 行) があります。
  2. empと属性の両方emp_addrが 1 つのトランザクションで作成されます。これにより、 に 1 行、 に 1 行あることが保証さemp_auditemp_addr_auditます。これで、レポートには 1 行のみが表示されます (両方のテーブル行が 1 つのトランザクションで作成されたため)。

シナリオ:
トランザクション #1: emp と emp_addr の両方に行を挿入します。これにより、emp_audit と emp_addr_audit でそれぞれ 1 行になります。(INSERT)
トランザクション #2 : 上記の emp' 属性を更新します。これにより、emp_audit に UPDATE 行が作成されます。
トランザクション #3 : 上記の emp_addr の属性を更新します。これにより、emp_addr_audit に UPDATE 行が作成されます。

次の SQL #1 を試してみたところ、(予想どおり) 3 行が返されました。

SQL #1

ただし、SQL に句を追加するwhereと、2 行しか返されません。行が欠落しているのはトランザクション #3 の結果であり、emp_addr テーブルの行のみが更新され、emp テーブルの行は変更されていません。
SQL #2

empnumに基づいて除外できるように、3 つのトランザクションに対して 3 つの行を取得できるSQL は何ですか?

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

sql - MySQL:完全外部結合-1つの列をマージするにはどうすればよいですか?

MySQLの完全外部結合について質問があります。2つ(またはそれ以上)のテーブルがあります:

私はこのクエリを使用して参加しました:

取得するため:

私の問題は、これを取得するために2つのid列を同時に1つの列に折りたたむことができないことです。

それを行う方法について何か提案はありますか?

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

mysql - MySQL FULL JOIN は機能しないが、RIGHT および LEFT 結合は機能する

これは私を夢中にさせています。結合を実行しようとしている 2 つのテーブル、usersXstats と usersXstats_alltime があります。

両方のテーブルには、id、userId、statId、および value という同じ列があります。

私がやろうとしていることは

しかし、これは戻ってきています

このクエリは、FULL JOIN を LEFT JOIN、RIGHT JOIN、または INNER JOIN に置き換えると、期待どおりに機能します。

最初に読みやすくするために、次のクエリを作成しました。

別のエラーが返されました:

check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULL JOIN usersXstats_alltime as uxsat ON uxs.userId=uxsat.userId AND uxs.statId' at line 1

私は一体何を間違っているのですか?前もって感謝します!

0 投票する
15 に答える
898477 参照

sql - MySQLで完全な外部参加を行うにはどうすればよいですか?

MySQLで完全な外部結合を実行したいと思います。これは可能ですか?完全な外部結合はMySQLでサポートされていますか?