Skip Navigation
Expand
レポートで使用されるテーブル結合タイプ
Answer ID 7698   |   Last Review Date 12/16/2018

複数のテーブルをレポートに追加するときに、「結合タイプの切替え」のオプションがあります。結合タイプとはどのようなものですか。テーブル結合とはどのようなものですか。

テーブル結合を使用すると、複数のデータベース・テーブルからのデータを単一のクエリー結果にリンクできます。これにより、複数のテーブルからのデータを単一のレポートに表示できます。または複数のテーブルからデータを使用してレポートを作成する場合、テーブル間で使用する結合の種類を指定できます。

2つのテーブルの情報を正しく結合するには、各テーブルに、両方のテーブルに共通したデータ・フィールドを含める必要があります。フィールドは、各テーブル内で同じ名前である必要はありませんが、両方のテーブルで共通の要素を参照する必要があります。


テーブル間の結合タイプの特定

 レポートでテーブルが結合される場合、使用されるアイコンは結合タイプを示します。左側の円が青色で完全に塗りつぶされている場合、テーブル間には外部結合があります。アイコンの重なった部分のみ青色である場合、テーブル間の結合は内部結合です。

レポートでテーブルを結合する方法を特定するには、次の手順を使用します。

  1. レポート・エクスプローラから、編集のためレポートを開きます。または、レポートがナビゲーション項目にリストされている場合、レポートを右クリックし、「レポート定義の編集」を選択します。
  2. 「ホーム」タブから、「テーブル」をクリックします。
  3. また、リストにある字下げしたテーブルをクリックして、結合タイプを確認することもできます。
  4. 結合タイプを変更するには、「外部」または「内部」のラジオ・ボタンをクリックして、「OK」をクリックします。次にレポートを保存します。

簡略例

たとえば、Oracle B2C Serviceデータベースでは、インシデント・テーブルには、アカウントIDによってインシデント割当てのあるスタッフ・メンバーを指定する割当て済みのフィールドが含まれます。アカウント・テーブルにはスタッフ・アカウントがリストされ、acct_idフィールドが含まれます。incidents.assignedフィールドとaccounts.acct_idフィールドはどちらも、同じ情報(スタッフ・アカウントID)を参照するため、インシデント・テーブルとアカウント・テーブルは結合可能です。その結果、これらのテーブルを結合することで、各スタッフ・メンバーに割り当てられたインシデントの数など、両方のテーブルからのデータを含めてレポートを実行したり、ビューを使用できるようになります。

次にリストした簡略化したインシデント・テーブルおよびアカウント・テーブルは、内部結合と外部結合の違いをわかりやすく示しています。
Ref_no インシデントステータス 割り当てられたインシデント アカウントAcct_ID アカウントの表示名
001 未解決 32 4 Jim
002 解決済 15 9 Paula
003 未解決 15 15 Brenda
004 未解決 (null) 27 Tom
005 更新済 27 32 Ken

クエリー結果に含まれる特定のデータは、クエリーで内部結合が使用されているか、外部結合が使用されているかに応じて異なります。ビューまたはレポートでテーブル・インスタンスを扱うときに「結合タイプの切替え」を選択すると、結合タイプは、内部結合から外部結合に、または外部結合から内部結合に変わります。テーブル間の結合タイプを変更するには、2つのテーブルの下部を右クリックして、「結合タイプの切替え」を選択します。

重なっている円のアイコンは、テーブル間で使用される結合のタイプを示します。円の交差部分のみ影が付いている場合、結合は内部結合です。左の円全体に影が付いている場合、結合は外部結合です。テーブルがどのように結合されているかについて、より具体的な情報を表示するには、テーブル名を右クリックして、「ノード情報」を選択します。


内部結合

最初のテーブルのフィールドの値が、2番目のテーブルのフィールドの値としても表示される場合にのみ、内部結合はクエリーからのデータを返します。これは、クエリーでデータを返すには、両方のテーブルの両方のフィールドにデータが存在する必要があることを意味します。

内部結合では、テーブルの順序は生成されるデータ・セットに影響しません。

Table Instances: incidents inner join to accounts

例:インシデント・テーブルおよびアカウント・テーブルのケースを使用して、内部結合を使用した場合は、スタッフ・メンバーに割り当てられているインシデントのみクエリー結果に含まれます。割当てを解除されたインシデントは、アカウント・テーブルに値がありません。つまり、これらのインシデントは結果セットに含まれないことを意味します。同様に、インシデントが割り当てられていないスタッフ・メンバーには、インシデントがないためクエリー結果に表示されません。

内部結合を使用して、前述の2つの簡略化されたテーブルが結合される場合、生成されるデータセットは次のようになります。
Ref_no ステータス 割当て/
Acct_ID
表示名
001 未解決 32 Ken
002 解決済 15 Brenda
003 未解決 15 Brenda
005 更新済 27 Tom

注意:内部結合の場合、インシデント004は(スタッフ・メンバーに割り当てられていないため)クエリー結果に表示されず、JimとPaula は、インシデントが割り当てられていないためデータセットにリストされません。


外部結合

外部結合は、左結合とも呼ばれます。外部結合の場合、クエリー結果には、最初のテーブルからのデータがすべて含まれ、2番目のテーブルにデータが存在する場合は、各レコードの2番目のテーブルからのデータも含まれます。外部結合の場合、データが返される行には、最初(または左)のテーブルからの情報しか含まれない可能性があります。2番目のテーブルに関連付けられたフィールドが、ヌル値になる場合があります。

外部結合を扱う場合、テーブルの順序は非常に重要になります。生成されるデータセットは、結合に対して最初にリストされるテーブルによってまったく異なります。

Table Instances: incidents outer join to accounts

例:簡略化されたインシデント・テーブルおよびアカウント・テーブルを使用し、インシデント・テーブルを最初のテーブルとして外部結合すると、生成されるデータセットは次のようになります。

...結果のデータセットは次のとおりです。
Ref_no ステータス 割当て/
Acct_ID
表示名
001 未解決 32 Ken
002 解決済 15 Brenda
003 未解決 15 Brenda
004 未解決 (NULL) (NULL)
005 更新済 27 Tom

注意:この外部結合では、インシデント004は結果に含まれています。どのインシデントにも関連付けることができないため、PaulaとJim は結果に表示されません。


Table Instances: accounts outer join to incidents

例:簡略化されたインシデント・テーブルおよびアカウント・テーブルを使用し、アカウント・テーブルを最初のテーブルにすると、生成されるデータセットは次のようになります。

...結果のデータセットは次のようになります。
表示名 Acct_ID/
割当て
Ref_no ステータス
Jim 4 (NULL) (NULL)
Paula 9 (NULL) (NULL)
Brenda 15 002 解決済
Brenda 15 003 未解決
Tom 27 005 更新済
Ken 32 001 未解決

注意:この外部結合では、JimとPaulaは、割り当てられているインシデントがない場合でも、データセットにリストされています。インシデント004は、スタッフ・メンバーに関連付けられないので、結果には含まれません。


詳細情報は、現在ご利用のバージョンのオンライン・ドキュメンテーションにあるテーブル関係の管理セクションをご覧ください。Oracle B2C Service オンライン・ドキュメンテーション又はマニュアルにアクセスするには、Oracle B2C Serviceプロダクトのドキュメントをご覧ください。

Available Languages for this Answer:

Notify Me
The page will refresh upon submission. Any pending input will be lost.