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

single

2つのテーブルを結合

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

小規模なオンラインストアを運営する企業の注目を集めています。この企業には、互いに関連する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