---
title: "JOIN句"
url: https://docs.catalyst.zoho.com/ja/cloud-scale/help/zcql/joins/
description: "ZCQLは、使い慣れたクエリ言語をモデルにしたCatalyst独自のクエリ言語であり、アプリのデータベースを効率的にクエリするために使用できます。"
last_updated: 2026-02-23T12:39:41Z
service: Cloud Scale
type: general
---
# JOIN句
### はじめに
`JOIN`句は、`SELECT`クエリで、2つ以上のテーブルの関連するカラムに基づいて行を結合するために使用されます。すべてのテーブルの行が共通のカラムで結合されて一緒に生成されます。
`JOIN`句について詳しく学ぶ前に、JOINに関連するいくつかの主要用語を理解しましょう:
1. **主キー:** 主キーは、テーブル内のレコードの一意の識別子です。テーブルは1つのカラムを主キーカラムとして持つことができ、このカラム内の各レコードの値は一意でなければならず、必須で、重複できません。
2. **外部キー**:あるテーブルの外部キーカラムは、別のテーブルまたは同じテーブルの行を一意に識別します。2番目のテーブルの外部キーは、1番目のテーブルの主キーを参照します。
3. **親テーブル**:`JOIN`句において、親テーブルはJOINの基準となるベーステーブルです。
4. **結合テーブル**:結合テーブルは、`JOIN`句で親テーブルと結合されるセカンダリテーブルまたは子テーブルです。
> **注意:** 2つのテーブル間のJOINは、テーブル間にリレーションシップがある場合にのみ可能です。いずれかのテーブルが他方のテーブルの主キーカラムを参照している必要があるため、結合テーブルが親テーブルの外部キーカラムを持つか、親テーブルが結合テーブルの外部キーカラムを持つ必要があります。
この例では、_MovieID_カラムは映画の一意の識別番号を保持するため、_Movies_テーブルの主キーです。
**サンプルデータベース:**
チケット予約アプリケーションに登録されているすべての劇場の場所を指定する「Theaters」というテーブルを作成しましょう。
**Theaters**テーブルのサンプルレコードを以下に示します:
| TheaterID |
TheaterName |
Location |
| 047 |
The Express Cinemas |
New York City |
| 048 |
ANC Cinemas |
Rochester |
| 052 |
Cosmos Theater |
Albany |
| 053 |
FunTime Cinemas |
Buffalo |
_TheaterID_カラムは劇場の一意の識別番号を保持するため、_Theaters_テーブルの主キーです。_Movies_テーブルの_TheaterID_カラムは、_Theaters_テーブルの_TheaterID_カラムへの外部キーです。
> **注意:** `JOIN`句を使用する場合、クエリ内の各カラムについてカラム名とテーブル名を次のように指定する必要があります:**'_table\_name.column\_name_'**。例:'_Movies.MovieName_'、'_Theaters.Location_'
クエリでカラム名にテーブル名を指定しない場合、デフォルトでベーステーブルのカラムと見なされます。
### JOINの種類
ZCQLで実行できるJOINには2種類あります。
#### INNER JOIN
`INNER JOIN`は、親テーブルと結合テーブルの両方で一致する値を持つレコードを返します。2つのテーブルに対してINNER JOINを使用すると、両方のテーブルで指定されたカラムの値が一致するレコードのみが出力として生成されます。
`INNER JOIN`を使用する構文は以下のとおりです:
```sql
SELECT column_name(s)
FROM parent_table_name
INNER JOIN join_table_name
ON parent_table_name.column_name = join_table_name.column_name
```
**例:**
_Movies_テーブルから映画名、上映日、上映時間のリストと、_Theaters_テーブルから劇場名を表示するには、以下のクエリを実行します:
```sql
SELECT Movies.MovieName, Theatres.TheaterName, Movies.ShowDate, Movies.ShowTime,
FROM Movies INNER JOIN Theatres ON Movies.TheaterID = Theatres.TheaterID
```
以下の出力が生成されます:
| MovieName |
TheaterName |
ShowDate |
ShowTime |
| Ant-Man and the Wasp |
The Express Cinemas |
2018-07-13 |
13:30:00 |
| Hotel Transylvania 3: Summer Vacation |
Cosmos Theater |
2018-07-13 |
14:20:00 |
| The First Purge |
Cosmos Theater |
2018-07-14 |
17:00:00 |
| The First Purge |
FunTime Cinemas |
2018-07-14 |
21:30:00 |
#### LEFT JOIN
`LEFT JOIN`は、親テーブルのすべてのレコードと、結合テーブルの一致するレコードを返します。2つのテーブルに対してLEFT JOINを使用すると、結合テーブルに一致がない場合でも、親テーブルのすべてのレコードが返されます。結合テーブルに一致がないレコードの結果は'NULL'として表示されます。
`LEFT JOIN`を使用する構文は以下のとおりです:
```sql
SELECT column_name(s)
FROM parent_table_name
LEFT JOIN join_table_name
ON parent_table_name.column_name = join_table_name.column_name
```
**例:**
_Theaters_テーブルから劇場とその場所のリストと、_Movies_テーブルからその劇場で上映されている映画を表示するには、以下のクエリを実行します:
```sql
SELECT Theaters.TheaterName, Theaters.Location, Movies.MovieName
FROM Theaters
LEFT JOIN Movies
ON Theaters.TheaterID = Movies.TheaterID
```
以下の出力が生成されます:
| TheaterName |
Location |
MovieName |
| The Express Cinemas |
New York City |
The First Purge |
| ANC Cinemas |
Rochester |
NULL |
| Cosmos Theater |
Albany |
Hotel Transylvania 3: Summer Vacation |
| FunTime Cinemas |
Buffalo |
Skyscraper |
ANC CinemasはMoviesテーブルに一致するレコードがないため、結果は'NULL'として表示されます。
### 複数JOIN
1つのZCQLクエリで最大**4つ**のJOINを組み合わせることができます。ただし、各JOIN句に対して**1つ**の`JOIN`条件のみ記述できます。これにより、4つの異なるテーブルの結果が表示され、1つのテーブルが`INNER JOIN`または`LEFT JOIN`を使用して別のテーブルにリンクされます。
**サンプルデータベース**:
チケット予約アプリケーションに、特定の映画と劇場のチケット1枚あたりの価格(ドル)を表示する'Pricing'というテーブルを作成しましょう。このテーブルは、_Theaters_テーブルの_TheaterID_と_Movies_テーブルの_MovieID_を外部キーとして参照します。
**Pricing**テーブルのサンプルレコードを以下に示します:
| TheaterID |
MovieID |
Price |
| 047 |
2056 |
9.20 |
| 048 |
NULL |
NULL |
| 052 |
2057 |
8.64 |
| 052 |
2058 |
11.50 |
| 053 |
2059 |
7.44 |
_Theaters_テーブルの_TheaterName_、_Movies_テーブルの_MovieName_、_ShowDate_、_ShowTime_、_Pricing_テーブルの_Price_を表示するクエリを以下のように実行できます:
```sql
SELECT Theaters.TheaterName,Movies.MovieName, Movies.ShowDate,
Movies.ShowTime, Pricing.Price
FROM Pricing
LEFT JOIN Movies
ON Theaters.TheaterID = Movies.TheaterID
INNER JOIN Theaters
ON Movies.MovieID = Pricing.MovieID
```
以下の出力が生成されます:
| TheaterName |
MovieName |
ShowDate |
ShowTime |
Price |
| The Express Cinemas |
The First Purge |
2018-07-13 |
13:00:00 |
9.20 |
| ANC Cinemas |
NULL |
NULL |
NULL |
NULL |
| Cosmos Theater |
Ant-Man and the Wasp |
2018-07-13 |
14:20:00 |
8.64 |
| Cosmos Theater |
Hotel Transylvania 3: Summer Vacation |
2018-07-14 |
17:00:00 |
11.50 |
| FunTime Cinemas |
Skyscraper |
2018-07-14 |
21:30:00 |
7.44 |
> **注意:**
* `JOIN`句のすべての機能を活用するには、コードベースを**ZCQL V1**から**ZCQL V2**に移行することをお勧めします。
* **2024年12月1日**より、すべての[Org](https://docs.catalyst.zoho.com/ja/getting-started/catalyst-organizations/)の[開発環境](https://docs.catalyst.zoho.com/ja/deployment-and-billing/environments/development-environment/)にある現在のすべてのプロジェクトは、自動的に**ZCQL V2 Parser**にマッピングされます。
* **2025年4月1日**より、*開発環境*で**ZCQL V2 Parser**にすでにマッピングされているすべての*Org*のすべてのプロジェクトは、プロジェクトの本番環境が有効化された場合、[本番環境](https://docs.catalyst.zoho.com/ja/deployment-and-billing/environments/production-environment/)で自動的に**ZCQL V2 Parser**にマッピングされます。
* **ZCQL V2**の強化と機能の詳細については、この[ヘルプドキュメント](https://docs.catalyst.zoho.com/ja/cloud-scale/help/zcql/syntax-exceptions/)をご参照ください。