

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# FROM 句
<a name="FROM_clause30"></a>

クエリ内の FROM 句は、データの選択下のテーブル参照 (テーブル、ビュー、サブクエリ) を一覧表示します。複数のテーブル参照が一覧表示されている場合、FROM 句または WHERE 句のいずれかの適切な構文を使って、テーブル参照を結合する必要があります。結合基準を指定していない場合、クエリはクロス結合 (デカルト積) として処理されます。

**Topics**
+ [構文](#FROM_clause30-synopsis)
+ [パラメータ](#FROM_clause30-parameters)
+ [使用に関する注意事項](#FROM_clause_usage_notes)

## 構文
<a name="FROM_clause30-synopsis"></a>

```
FROM table_reference [, ...]
```

ここで *table\$1reference* は、次のいずれかになります。

```
with_subquery_table_name | table_name | ( subquery ) [ [ AS ] alias ]
table_reference [ NATURAL ] join_type table_reference [ USING ( join_column [, ...] ) ]
table_reference [ INNER ] join_type table_reference ON expr
```

## パラメータ
<a name="FROM_clause30-parameters"></a>

 with\$1subquery\$1table\$1name**   
[WITH 句](WITH_clause.md) のサブクエリで定義されるテーブル。

 table\$1name**   
テーブルまたはビューの名前。

 alias**   
テーブルまたはビューの一時的な代替名。エイリアスは、サブクエリから生成されたテーブルに対して提供する必要があります。他のテーブル参照では、エイリアスはオプションです。AS キーワードは常にオプションです。テーブルエイリアスは、WHERE 句など、クエリの別の部分のテーブルを識別するため、便利なショートカットを提供します。  
例えば、次のようになります。  

```
select * from sales s, listing l
where s.listid=l.listid
```
テーブルエイリアスを定義した場合、クエリでそのテーブルを参照するにはエイリアスを使用する必要があります。  
例えば、クエリが `SELECT "tbl"."col" FROM "tbl" AS "t"` の場合、テーブル名は基本的に上書きされているため、クエリは失敗します。この場合の有効なクエリは `SELECT "t"."col" FROM "tbl" AS "t"` です。

 column\$1alias**   
テーブルまたはビュー内の列に対する一時的な代替名。

 subquery**   
テーブルに対して評価を実行するクエリ式。テーブルは、クエリの有効期間中のみ存在し、通常は名前またはエイリアス**が与えられます。ただし、エイリアスは必須ではありません。また、サブクエリから生成されたテーブルに対して、列名を定義することもできます。サブクエリの結果を他のテーブルに結合する場合、および列をクエリ内のどこかで選択または拘束する場合、列のエイリアスの命名は重要です。  
サブクエリには ORDER BY 句が含まれることがありますが、LIMIT または OFFSET 句も併せて指定しない場合、この句には効力がありません。

NATURAL   
2 つのテーブル内で同じ名前を付けられた列のペアをすべて結合列として、自動的に使用する結合を定義します。明示的な結合条件は必要ありません。例えば、CATEGORY と EVENT の両方のテーブルに CATID という名前の列が存在する場合、これらのテーブルの NATURAL 結合は CATID 列による結合です。  
NATURAL 結合を指定しても、結合対象のテーブルに同じ名前の列ペアが存在しない場合、クエリはデフォルト設定のクロス結合になります。

 join\$1type**   
以下のいずれかの結合タイプを指定します。  
+ [INNER] JOIN 
+ LEFT [OUTER] JOIN 
+ RIGHT [OUTER] JOIN 
+ FULL [OUTER] JOIN 
+ CROSS JOIN 
クロス結合は非限定の結合で、2 つの表のデカルト積を返します。  
内部結合と外部結合は限定結合です。これらの結合は、FROM 句の ON または USING 構文、または WHERE 句条件を使った (Natural 結合での) 黙示的な結合です。  
内部結合は、結合条件、また結合列のリストに基づいて、一致する行だけを返します。外部結合は、同等の内部結合が返すすべての行に加え、「左側の」表、「右側の」表、または両方の表から一致しない行を返します。左の表は最初に一覧表示された表で、右の表は 2 番目に一覧表示された表です。一致しない行には、出力列のギャップを埋めるため、NULL が含まれます。

ON join\$1condition**   
結合列を ON キーワードに続く条件として記述する、結合タイプの指定。次に例を示します。  

```
sales join listing
on sales.listid=listing.listid and sales.eventid=listing.eventid
```

USING ( join\$1column** [, ...] )   
結合列をかっこで一覧表示する結合の指定タイプ。複数の結合列を指定する場合、カンマによって区切ります。USING キーワードは、リストより前に指定する必要があります。例:   

```
sales join listing
using (listid,eventid)
```

## 使用に関する注意事項
<a name="FROM_clause_usage_notes"></a>

列を結合するには、データ型に互換性がなければなりません。

NATURAL または USING 結合は、中間結果セットの結合列の各ペアの一方だけを保持します。

ON 構文を使った結合は、中間結果セットの両方の結合列を保持します。

[WITH 句](WITH_clause.md) も参照してください。