お知らせ:

当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

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を使用する構文は以下のとおりです:

copy
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_テーブルから劇場名を表示するには、以下のクエリを実行します:

copy
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を使用する構文は以下のとおりです:

copy
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_テーブルからその劇場で上映されている映画を表示するには、以下のクエリを実行します:

copy
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_テーブルの_TheaterNameMovies_テーブルの_MovieNameShowDateShowTime、_Pricing_テーブルの_Price_を表示するクエリを以下のように実行できます:

copy
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開発環境にある現在のすべてのプロジェクトは、自動的にZCQL V2 Parserにマッピングされます。

  • 2025年4月1日より、開発環境ZCQL V2 ParserにすでにマッピングされているすべてのOrgのすべてのプロジェクトは、プロジェクトの本番環境が有効化された場合、本番環境で自動的にZCQL V2 Parserにマッピングされます。

  • ZCQL V2の強化と機能の詳細については、このヘルプドキュメントをご参照ください。

最終更新日 2026-02-23 18:09:41 +0530 IST

このページについて