Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 2つのテーブルのJOIN | テーブルの結合
中級SQL
セクション 3.  1
single

single

book2つのテーブルのJOIN

メニューを表示するにはスワイプしてください

小規模なオンラインストアを運営する企業から注目を集めています。この企業には、互いに関連する2つのテーブルがあります。最初のテーブルには、オンラインストアで販売されている商品の情報が含まれています。

productテーブルの構造は以下の通りです:

2つ目のテーブルには、ウェブサイト上の商品カテゴリと、それぞれのカテゴリの簡単な説明が含まれています。

categoryテーブルの構造は以下の通りです:

最初の課題は、これら2つのテーブルを結合して、各カテゴリにいくつの商品があるかを調べることです。これを実現するために、JOIN文を使用します。

課題に取り組む前に、JOIN文とは何か、そしてその仕組みについて理解しましょう。

Note
定義

SQLにおけるJOINは、2つ以上のテーブル間で関連するカラムに基づいて行を結合する操作。JOINを使用することで、1つのクエリで複数のテーブルからデータを取得でき、関連データの分析や処理が容易になる。

2つのテーブルを結合するには、共通のカラムを持っている必要がある。ここでは、JOINテーブルとemployeesテーブルを使ってdepartmentの動作を確認する。共通のカラムはemployees.departmentdepartments.name

Note
注意

これらのテーブルのカラムを記述する際は、テーブル名ドットカラム名の順で指定する。特に同じ名前のカラムが複数のテーブルに存在する場合、コードの可読性が向上し、SQLにどのテーブルのどのカラムかを明確に伝えることができる。

各部門タイプ(tech/non-tech)ごとの従業員の合計給与を取得するタスク。

このタスクを達成するためのクエリは次のようになります。

1234
SELECT department.type, SUM(employees.salary) AS total_salary FROM employees JOIN department ON employees.department = department.name GROUP BY department.type
copy

このクエリでJOINをどのように使用しているかを分解します。

  1. SELECT部分では、両方のテーブルから取得したいカラムをリストし、明確にするためにテーブル名を付けています。
  2. JOIN部分では、結合するテーブルと、それらを結びつける共通カラムを指定します。ここではemployees.departmentdepartment.nameです。
  3. その後、typeグループ化し、SUM()関数を使って合計給与を計算します。

もし複雑に感じる場合は、JOINの簡単な構文を以下に示します。

SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
Note
注記

UNION句とは異なり、JOIN文は共通する列だけでなく、テーブル全体を結合可能。さらに、JOINではUNIONのようなサブクエリは不要。

タスク

スワイプしてコーディングを開始

2つのテーブル categoryproduct を結合する必要があります。これら2つのテーブルの共通カラムは product.category_idcategory.id です。

各カテゴリごとの商品の合計数量を求めてください。そのために、product.amount カラムの合計値を計算します。

このカラムにはエイリアス total_amount を付与してください。 クエリの最後で、total_amount カラムを昇順で並べ替えてください。

結果には2つのカラム、category.nametotal.amount を含めてください。

簡単な手順

  • category.name カラムと、product.amount テーブルの product カラムの合計値を取得します。
  • 2番目のカラムにはエイリアス total_amount を付与します。
  • category 文を使って JOIN テーブルを結合します。
  • 共通カラム product.category_id = category.id でテーブルを結合します。
  • 結果を category.name でグループ化します。
  • total_amount で結果を並べ替えます。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  1
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt