--- 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/)をご参照ください。