12

私はユニオンとユニオンのすべてのロジックを調べ、例を試していました。私を困惑させたのは、unionまたはunion all操作を実行するために、両方のテーブルに同じ数の列が必要な理由です。

私の質問がばかげているなら許してください、しかし私はどこでも正確な答えを得ることができませんでした。そして、概念的に考えると、1つの共通の列が存在する限り、2つのテーブルをマージするのは簡単なはずです(結合操作のように)。しかし、そうではありません。理由を知りたいのですが。

4

5 に答える 5

13

JOIN操作では、両方のテーブルで同じ数の列を選択する必要はありません。UNIONの操作は、結合するものとは異なります。これは、1つの大きなブロックにまとめて「貼り付ける」ことができる2つの別個のデータリストと考えてください。一致しない列を作成することはできません。

それを見る別の方法は、JOINがこれを行うことです:

TableA.Col1, TableA.Col2 .... TableB.Col1, TableB.Col2

UNIONはこれを行います:

TableA.Col1, TableA.Col2
TableB.Col1, TableB.Col2

JOINSは行に列を追加し、UNIONSは既存の行にさらに行を追加します。それが彼らが「一致」しなければならない理由です。

マット

于 2013-01-31T05:02:42.017 に答える
2

オペレーションに参加しcombines columns from two tablesます。

ユニオンとユニオンはすべてcombines two results setsですが、2つの結果を組み合わせるには、互換性のあるデータ型を持つ同じ数の列が必要です。

現実の世界では、たとえばクリケットのゲームをプレイするには、両方のチームに11人のプレーヤーが必要です。一方のチームに7人、反対のチームに11人のプレーヤーは許可されていません。

于 2013-01-31T05:02:11.673 に答える
2

次のような列と値を持つEMPTableがあるとします:id、name、address、salary、DOB 1、'SAM'、 '2 Merck Ln'、100000、 '08/18/1980'

列名のみでUNIONしたい場合(値が「TOBY」であるとしましょう)、それは他の値をデフォルトでNULLに設定する必要があることを意味します(スマートソフトウェアまたはdbが暗黙的にそれを行うことができます)。これは本質的に以下に変換されます。 (リレーショナルテーブルの整合性を防ぐため)->

1, 'SAM', '2 Merck Ln', 100000, '08/18/1980'
UNION
NULL,'TOBY', NULL, NULL, NULL

定義による「結合」は、同じクラスまたはタイプの(異なる)値のマージです。

于 2014-09-24T18:57:00.280 に答える
1

との違いを調べる必要がUNIONありJOINます。

基本的に、UNIONあるソース(テーブル、ビュー、テーブルのグループなど)からレコードを取得し、それらの結果を別のソースからのレコードと組み合わせる場合に使用します。共通の結果セットを取得するには、同じ列が必要です。

JOINあるソースのレコードを別のソースと結合する場合に使用します。必要に応じて、いくつかのタイプのJOIN(INNER、LEFT、RIGHTなど)があります。JOINを使用する場合は、任意の列を指定できます。

幸運を。

于 2013-01-31T05:02:25.327 に答える
0

結合は基本的に、2つ以上のテーブルからデータを取得する場合に使用されます。このため、同じ数の列をフェッチする必要はありません。正規化の概念を使用してテーブルを2つの部分に分割した状況を考えてみます。

emp [eid、ename、edob、esal] emp_info [eid、emob_no]

ここで私たちは名前と携帯番号を知りたいです。ここでは、必要な情報を同じテーブルで提供できないため、すべての従業員の中で結合の概念を使用します。

使用します。

SELECT E.ENAME、EI.EMOB_NO FROM EMP E、EMP_INFO EI WHERE E.EID = EI.EID AND LOWER(E.ENAME)='john';

ここで、銀行に普通預金口座とローン口座を持っている従業員を見つけたい状況について考えてみましょう。ここでは、2つのテーブルの結果から一般的なタプルを見つけたいと思います。このために、set操作を使用します。【交差点】

セット操作の場合、2つの条件が満たされている必要があります。

  1. 同じいいえ。属性の数は、各テーブルからフェッチする必要があります。

  2. 各属性のドメインは、上位のドメインと互換性があるものと同じである必要があります。

于 2013-01-31T05:14:29.583 に答える