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 JOIN
、OUTER 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 JOIN
、RIGHT JOIN
、およびfull OUTER JOIN
—そしてそれらが実際にどのように機能するかを調査しました。
これで、SQL JOIN
を実行する準備が整いました。 専門家のような操作!
-
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
-
SQLServerでの結合
SQL Server(Transact-SQL)では、JOINは複数のテーブルからデータを取得するために使用され、SQLコマンドで2つ以上のテーブルが接続されている場合に発生します。 SQLServerの4種類のJOINを次に示します 内部結合 -単純な接続フォームとも呼ばれます 左外側の結合 -またはLEFTJOIN 右外側の参加 -またはRIGHTJOIN 完全な外部参加 -または完全に参加 次に、SQL ServerのJOINをよりよく理解するために、構文、図、および例を見てみましょう。 内部結合 ほとんどの場合、特定のコマンドですでにINNERJOINを使用しています。これは最も一