SQL Server
 Computer >> コンピューター >  >> プログラミング >> SQL Server

SQLServerでの結合

SQL Server(Transact-SQL)では、JOINは複数のテーブルからデータを取得するために使用され、SQLコマンドで2つ以上のテーブルが接続されている場合に発生します。 SQLServerの4種類のJOINを次に示します

  1. 内部結合 -単純な接続フォームとも呼ばれます
  2. 左外側の結合 -またはLEFTJOIN
  3. 右外側の参加 -またはRIGHTJOIN
  4. 完全な外部参加 -または完全に参加

次に、SQL ServerのJOINをよりよく理解するために、構文、図、および例を見てみましょう。

内部結合

ほとんどの場合、特定のコマンドですでにINNERJOINを使用しています。これは最も一般的なタイプの接続であり、接続条件が満たされたときにテーブルからすべての行を返します。

INNERJOIN構文

  SELEC T cot 
FROM bang1
INNER JOIN bang2
ON bang1. cot = bang2.cot;

SQLServerでの結合
内部結合の図解画像

返される結果は、state1とbang2の間の共通レコードです。

内部結合の例

  SELECT nhacung.nhacung _id, nhacung.nhacung_ten, donhang.donhang_ngay 
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_id = d onhang.nhacung_id;

上記の例で返される結果は、nhacung_idの値が2テーブルに等しい場合、「supplier」テーブルと「order」テーブルの情報の行です。

理解を深めるために、特定のデータを含む例を見てみましょう。

nhacungテーブルには、nhacung_idとnhacung_tenの2つの情報フィールドがあります。

nhacung_id nhacung_ten 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIA

donhangテーブルは、donhang_id、nhacung_id、donhang_ngayの3つのフィールドで構成されています。

donhang_id nhacung_id donhang_ngay 500125 10000 2003/05/12 500126 10001 2003/05/13 500127 10004 2003/05/14

以下のSELECTコマンド(INNER JOINを使用)を実行する場合:

  SELECT nhacung. nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay 
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_ id = donhang.nhacung_id;

これは返される結果セットです:

nhacung_id 10 IBM donhang_ngay 10000 2003/05/12 10001 Hewlett Packard 2003/05/13

nhacung_id(10002および10003)は1つのテーブルでしか使用できないため、テーブルからMicrosoftおよびNVIDIA製品が削除されます。 nhacung_id 10004がnhacungテーブルにないため、donhangテーブルの行500127(donhang_id)が削除されます。

INNERJOINの古い構文

INNER JOINは、以下のように古い構文で書き直すことができます(ただし、INNER JOINキーワードを含む構文を使用することをお勧めします)

  SELECT music ung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay 
FROM donhang, nhacung
WHERE nhacung.n hacung_id = donhang.nhacung_id;
左外側の結合

一部のデータベースは、LEFTOUTERJOINの代わりにLEFTJOINを使用します。このタイプの接続は、左側のパネルの行をON状態で返し、設定された条件を満たす残りのテーブルのみを取得します。

構文の左結合

  SELE CT cot 
FROM bang1
LEFT [OUTER] JOIN bang2
ON bang1.co t = bang2.cot;

SQLServerでの結合
青い領域の結果としての左結合を示します

返される結果は、state1と、state1(画像の青い領域)に割り当てられたbang2にあるレコードで構成されます。

左結合の例

  SELECT nh acung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay 
FROM nhacung
LEFT OUTER JOIN donhang
ON nhacung.nhac ung_id = donhang.nhacung_id;

上記の例では、テーブルからすべての行が返され、donhangテーブルの要件を満たす行のみが返されます。テーブルのnhacung_id値がdonhangテーブルに存在しない場合、donhangのすべてのフィールドに結果が結果テーブルに表示されます。

以下は具体的な例です。テーブルにはnhacung_idとnhacung_tenが含まれています。

nhacung_id nhacung_ten 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIA

Donhangテーブルには、donhang_id、nhacung_id、およびdonhang_ngayが含まれます。

donhang_id nhacung_id donhang_ngay 500125 10000 2003/05/12 500126 10001 2003/05/13

以下のSELECTコマンドを実行する場合:

  SELECT nhacu ng.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay 
FROM nhacung
LEFT OUTER JOIN donhang
ON nhacung.nhacun g_id = donhang.nhacung_id;

結果は次のようになります:

nhacung_id nhacung_ten 10000 IBM donhang_ngay 2003/05/12 10001 Hewlett Packard 2003/05/13 10002 Microsoft 10003 NVIDIA

MicrosoftとNVIDIAの行は、LEFT OUTER JOINを使用しているため、結果セットに残ります(左側のすべてのテーブルを取得) 。その間、これらのレコードのdonhang_ngayは有効になります。

右外側の結合

一部のデータベースは、RIGHTOUTERJOINではなくRIGHTJOINを使用します。このタイプの接続は、ON条件で右側のテーブルの行を返し、設定された条件を満たす残りのテーブルのみを取得します。

構文の右結合

  SELECT c ot 
FROM bang1
RIGHT [OUTER] JOIN bang2
ON bang1.cot = bang2.cot;

SQLServerでの結合
イラスト右結合

返される結果にはbang2が含まれ、レコードはbang2(画像の青い領域)に割り当てられたstate1にあります。

右結合の例

  SELECT don hang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten 
FROM nhacung
RIGHT OUTER JOIN donhang
ON nhacung.nha cung_id = donhang.nhacung_id;

返される結果は、donhangテーブルのすべての行と、nhacungテーブルの要件を満たす行のみです。

donhangテーブルのnhacung_idの値がテーブルに存在しない場合、リスト内のすべてのフィールドが結果テーブルに表示されます。

以下は具体的な例です。テーブルにはnhacung_idとnhacung_tenが含まれています。

nhacung_id nhacung_ten 10000 Apple 10001 Google

Donhangテーブルには、donhang_id、nhacung_id、donhang_ngayが含まれます。

donhang_id nhcung_id donhang_ngay 500125 10000 2003/08/12 500126 10001 2003/08/13 500127 10002 2003/08/14

以下のSELECTコマンドを実行する場合:

  SELECT donhang.don hang_id, donhang.donhang_ngay, nhacung.nhacung_ten 
FROM nhacung
RIGHT OUTER JOIN donhang
ON nhacung.nhacung_id = donhang.nhacung_id;

結果は次のようになります:

donhang_id donhang_ngay nhacung_id 500125 2003/08/12 Apple 500126 2003/08/13 Google 500127 2003/08/14

RIGHT OUTERJOINが使用中で。そのレコードのnhacung_tenには値が含まれていることに注意してください。

完全な外部参加

一部のデータベースは、FULLOUTERJOINではなくFULLJOINを使用します。この接続タイプは、左右のテーブルのすべての行と、条件を満たさない条件で設定されたNULL値を返します。

構文の完全結合

  SELE CT cot 
FROM bang1
FULL [OUTER] JOIN bang2
ON bang1.c ot = bang2.cot;

SQLServerでの結合
緑の領域の結果で完全に参加することを示します

返される結果には、bang1とbang2のすべてのレコードが含まれます。

完全な結合の例

  SELECT nhacung. nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay 
FROM nhacung
FULL OUTER JOIN donhang
ON nhacung.nhacung_i d = donhang.nhacung_id;

上記の例では、テーブルとドンハングからすべての行が返されますが、条件が満たされない場合、値は結果テーブルに設定されます。

音楽パネルのnhacung_idがdonhangテーブルにない場合、またはdonhangテーブルの値nhacung_idが音楽パネルにない場合は、情報フィールドが表示されます。

以下は、FULLOUTERJOINの具体例です。テーブルにはnhacung_idとnhacung_tenが含まれています。

nhacung_id nhacung_ten 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIA

Donhangテーブルには、donhang_id、nhacung_id、およびdonhang_ngayが含まれます。

donhang_id nhacung_id donhang_ngay 500125 10000 2003/08/12 500126 10001 2003/08/13 500127 10004 2003/08/14

以下のSELECTコマンドを実行する場合:

  SELECT nhacung .nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay 
FROM nhacung
FULL OUTER JOIN donhang
ON nhacung.nhacung_i d = donhang.nhacung_id;

結果は次のようになります:

nhacung_id nhacung_ten 10,000 donhang_ngay IBM 2003/08/12 10001 Hewlett Packard 2003/08/13 10002 Microsoft 10003 NVIDIA 2003/08/14

MicrosoftおよびNVIDIA製品は、使用しているため、引き続き結果セットに含まれます。フルアウタージョイン。次に、これらのレコードのdonhang_ngayに値が含まれます。 nhacung_idの行は10004で、これも結果テーブルにありますが、これらのレコードのnhacung_idとnhacung_tenには値が含まれています。


  1. SQLServerでの結合

    SQL Server(Transact-SQL)では、JOINは複数のテーブルからデータを取得するために使用され、SQLコマンドで2つ以上のテーブルが接続されている場合に発生します。 SQLServerの4種類のJOINを次に示します 内部結合 -単純な接続フォームとも呼ばれます 左外側の結合 -またはLEFTJOIN 右外側の参加 -またはRIGHTJOIN 完全な外部参加 -または完全に参加 次に、SQL ServerのJOINをよりよく理解するために、構文、図、および例を見てみましょう。 内部結合 ほとんどの場合、特定のコマンドですでにINNERJOINを使用しています。これは最も一

  2. MS SQL Serverとは何ですか?

    SQL Serverとは何ですか? RDBMSに基づいてMicrosoftが開発したソフトウェア。 また、ORDBMS(オブジェクトリレーショナルデータベース管理システム)。 独立したプラットフォーム。 ソフトウェアは、コマンドラインインターフェイスとGUIインターフェイスの両方を使用します。 SQL言語のサポート(以前のSEQUEL-構造化された英語のクエリ言語)-これはIBMの製品です。 SQLServerを使用する目的 データベースを作成します。 データベースを維持します。 SSASによるデータ分析-SQLServerAnalysisServices。 SSRSによるレポートの作