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

SQL外部結合

データベースを使用している場合、2つ以上のテーブルを同時にクエリして、結果の組み合わせセットを作成することができます。たとえば、すべての従業員の名前と彼らが働いている部門を調べたい場合があります。これらの2つの情報は2つの異なるテーブルに保存されています。

ここでSQL 結合が入ります。テーブルを結合すると、複数のテーブルに対してクエリを実行し、結合された結果を作成できます。

このガイドでは、結合の1つのタイプであるOUTER JOINに焦点を当てます。 。 OUTER JOIN 演算子は、ファイナルテーブルに関連する行がない場合でも、行を返します。 3種類のOUTER JOINについて説明します s、それらがどのように機能するか、およびSQLでそれらをどのように使用できるか クエリ。

SQLがリフレッシャーに参加

クエリ。通常はSELECTで始まります。 ステートメントは、データベースから情報を取得するために使用されます。通常、クエリを作成するときは、1つのテーブルから情報を取得することに重点を置き、FROMを使用します。 コマンドがクエリするテーブルを指定する句。標準のSQLを作成するための構文は次のとおりです。 クエリ:

SELECT column_name FROM table_name WHERE certain_conditions_are_met;

これは、employees内のすべての従業員の名前のリストを取得するクエリの例です。 テーブル:

SELECT name FROM employees;

クエリは次を返します:

名前
ルーク
マイク
ハンナ
ジェフ
アレクシス
エマ
ジョナ
アダム

(8行)

WHEREを使用することもできます 特定の基準セットを満たすレコードのみを含めるようにクエリの結果を除外する句。たとえば、すべての営業担当者またはすべてのエグゼクティブスタッフの名前を検索するクエリを作成できます。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

しかし、複数のテーブルから情報を取得し、その結果を1つのテーブルに結合したい場合はどうでしょうか。そこで参加者が登場します。

結合を使用すると、複数のテーブルをクエリして、一致した行を含む結合された結果セットを作成できます。結合には主に次の3つのタイプがあります。INNER JOINOUTER JOIN 、およびCROSS JOIN

INNER JOIN ■クエリしている両方のテーブルで一致する行を返しますが、OUTER JOIN ■結合されたテーブルに関連する行がない場合でも、行を返します。 CROSS JOIN sは結合条件のない結合であり、テーブルの各行は別のテーブルの対応する行と結合されます。

SQL外部結合

すでに説明したように、INNER JOINを実行している場合 、別のテーブルで一致しないいずれかのテーブルの行は、結果セットに返されません。しかし、これらの値を取得したい場合はどうでしょうか。 OUTER JOINを使用できます このデータを取得します。

OUTER JOINには3つのタイプがあります :

  • LEFT OUTER JOINS 左側のテーブルから一致しない行を返します;
  • RIGHT OUTER JOINS 右側のテーブルから一致しない行を返します。
  • FULL OUTER JOINS すべてのテーブルから一致しない行を返します。

OUTER JOIN は、ニーズに基づいて両方のテーブルのレコードを照合することができ、使用する結合のタイプに関連するすべてのレコードを返します。

SQL結合:左

左結合は、結合条件が満たされた左側のテーブルのすべての行と右側のテーブルの行を返します。

employeesという2つのテーブルがあるとします。 およびcompany_departments 。ここで、どの部門にも割り当てられていない場合でも、すべての従業員の名前と部門名を取得したいとします。この情報は、LEFT JOINを使用して取得できます。 。

以下は、LEFT JOINの例です。 共通の値department_idを使用してemployeesテーブルとcompany_departmentsテーブルを組み合わせることにより、すべての従業員の名前とその部門名を取得するクエリ。

SELECT employees.name, company_departments.name
FROM employees
LEFT JOIN company_departments
ON employees.department_id = company_departments.department_id;

クエリは次を返します:

名前 名前
ルーク 販売
マイク 販売
ハンナ 販売
ジェフ 販売
アレクシス 販売
エマ マーケティング
ジョナ エグゼクティブ
アダム

(8行)

ご覧のとおり、LEFT JOIN employeesからすべての行を返しました company_departmentsに所属する部門が見つからない場合でも、テーブル テーブル。

左結合について詳しく知りたい場合は、SQLのCareerKarmaチュートリアルを読むことができます。 ここでの操作。

SQL結合:右

RIGHT JOIN ステートメントは、LEFT JOINの正反対です。 オペレーター。 RIGHT JOIN 結合条件が満たされた左側のテーブルの行だけでなく、右側のテーブルのすべての行を返します。

すべての部門の名前と、それらの部門で働くすべての従業員の名前のリストを取得するとします。また、従業員が割り当てられていない部門のデータも取得したいと考えています。次のクエリを使用して、このデータを取得できます。

SELECT employees.name, company_departments.name AS "DeptName"
FROM employees
RIGHT JOIN company_departments
ON employees.department_id = company_departments.department_id;

上記のクエリは次を返します:

名前 「部門名」
ルーク 販売
マイク 販売
ハンナ 販売
ジェフ 販売
アレクシス 販売
エマ マーケティング
ジョナ エグゼクティブ

ペイロール

情報技術

(9行)

ご覧のとおり、クエリはすべての部門のリストと、それらの部門で働くすべての従業員の名前を返しました。クエリは部門のPayrollも返しました およびInformation Technology 、現在スタッフがいません。

さらに、クエリでは、LEFT JOINの従業員であるAdamは返されませんでした。 どの部門にも割り当てられていないクエリ。これは、RIGHT JOINが原因です。 条件が満たされている右側のテーブル(company_departments)のすべての行が含まれ、Adamは右側のテーブルのどのレコードにも所属していません。

完全なSQL外部結合

Full OUTER JOIN sは珍しいタイプのSQL joinです これは、両方のテーブルから一致しないレコードを返すために使用できます。多くの場合、full OUTER JOIN sは、2つのテーブル間にどの程度のオーバーラップが存在するかを理解するために、集計関数とともに使用されます。

すべての従業員と部門のリストを取得したいとします。次のSQLを使用できます その情報を取得するためのクエリ:

SELECT employees.name, company_departments.name AS "DeptName"
FROM employees
FULL OUTER JOIN company_departments
ON employees.department_id = company_departments.department_id;

クエリは次を返します:

名前 「部門名」
ルーク 販売
マイク 販売
ハンナ 販売
ジェフ 販売
アレクシス 販売
エマ マーケティング
ジョナ エグゼクティブ
アダム

ペイロール

情報技術

(10行)

上記の結果セットには、部門に割り当てられていない場合でも、すべての従業員の名前と、割り当てられている部門のリストが含まれています。結果セットには、部門に従業員が割り当てられていない場合でも、すべての部門名のリストも含まれます。

結論

Joins SQLです 2つ以上のテーブルを同時にクエリし、結合された結果セットを作成できるサーバー関数。たとえば、会社の従業員のリストと、最新の給与小切手が処理された日付を取得したい場合は、joinを使用できます。 。

このチュートリアルでは、OUTER JOINに焦点を当てました s、joinの行を返します 結合されたテーブルに関連する行がない場合でも。また、OUTER JOINの3つの主要なタイプについても説明しました。 s— LEFT JOINRIGHT JOIN 、およびfull OUTER JOIN —そしてそれらが実際にどのように機能するかを調査しました。

これで、SQL JOINを実行する準備が整いました。 専門家のような操作!


  1. SQLServerのPIVOT句

    SQL Server(Transact-SQL)では、PIVOT句を使用すると、クロス集計を使用して、あるテーブルから別のテーブルにデータを転送できます。つまり、集計結果を取得して行から列に移動できます。 この例では、合計を計算してから、データテーブルの列に行を渡します。 PIVOT句の構文 SELECT cot_ dautien AS , [giatri_chuyen1], [giatri_chuyen2], … [giatri_chuyen_n] FROM () AS PIVOT ( ham_tong () FOR IN ([giatri_chuyen

  2. SQLServerでの結合

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