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

チャレンジ:2つのテーブルをJOINする

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

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

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

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

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

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

課題に取り組む前に、JOIN文とは何か、どのように機能するのかを理解しましょう。

Note
定義

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

2つのテーブルを結合するには、共通のカラムを持っている必要があります。これらのテーブルの場合、この共通のリンクは product.category_idcategory.id です。

Note
注意

これらのテーブルのカラムを記述する際は、テーブル名から始めて、ドットを付け、その後にカラム名を書きます。特にテーブル間で同じ名前のカラムがある場合、コードを明確に保つのに役立ちます。これにより、SQLにどのテーブルのどのカラムを指しているかを正確に伝えることができます。

JOIN の実際の動作例です。各カテゴリ名ごとに商品の平均価格を取得したいとします。

これを実現するクエリは次のようになります。

1234
SELECT category.name, AVG(product.price) AS average_price FROM product JOIN category ON product.category_id = category.id GROUP BY category.name

このクエリで JOIN を使用した方法の内訳:

  1. SELECT 部分では、両方のテーブルから取得したいカラムをリストし、明確にするためにテーブル名を含める;
  2. JOIN 部分では、結合するテーブルcategory)と、それらを結びつける共通カラムproduct.category_id = category.id)を指定;
  3. その後、category.nameグループ化し、AVG() 関数を使って平均価格を計算。

もし複雑に感じる場合は、JOIN を使うためのシンプルな構文はこちら:

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

UNION句とは異なり、JOIN文は共有するカラムだけでなく、テーブル全体を結合可能。UNIONはサブクエリを必ずしも必要とせず、結合結果をフィルタリングやグループ化したい場合のみサブクエリが必要。多くの場合、2つのUNION文の間で直接SELECTを使用可能。

タスク

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

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