single
2つのテーブルを結合
メニューを表示するにはスワイプしてください
小規模なオンラインストアを運営する企業の注目を集めています。この企業には、互いに関連する2つのテーブルがあります。最初のテーブルには、オンラインストアで販売されている商品の情報が含まれています。
productテーブルの内容は以下の通りです:
2つ目のテーブルには、ウェブサイト上の商品カテゴリと、それぞれのカテゴリの簡単な説明が含まれています。
categoryテーブルの内容は以下の通りです:
最初の課題は、これら2つのテーブルを結合して、各カテゴリにいくつの商品があるかを調べることです。これを実現するためにJOIN文を使用します。
課題に入る前に、JOIN文とは何か、どのように機能するのかを理解しましょう。
SQLのJOINは、2つ以上のテーブルの行を、関連するカラムを基準に結合する操作。JOINを使うことで、複数のテーブルから1つのクエリでデータを取得でき、関連データの分析や処理が簡単になる。
2つのテーブルを結合するには、共通のカラムを持っている必要があります。これらのテーブルの場合、この共通のリンクは product.category_id と category.id です。
これらのテーブルのカラムを記述する際は、テーブル名から始めて、ドットを付け、その後にカラム名を記述します。特にテーブル間で同じ名前のカラムがある場合、コードを明確に保つのに役立ちます。これにより、SQLにどのテーブルのどのカラムを指しているかを正確に伝えることができます。
JOIN の実際の動作例です。各カテゴリ名ごとに商品の平均価格を取得したいとします。
これを実現するクエリは次のようになります。
1234SELECT category.name, AVG(product.price) AS average_price FROM product JOIN category ON product.category_id = category.id GROUP BY category.name
このクエリで JOIN を使用した方法の内訳:
SELECT部分では、両方のテーブルから取得したいカラムをリストし、明確にするためにテーブル名を含める;JOIN部分では、結合するテーブル(category)と、それらを結びつける共通カラム(product.category_id = category.id)を指定;- その後、
category.nameでグループ化し、AVG()関数を使って平均価格を計算。
もし複雑に感じる場合は、JOIN を使うためのシンプルな構文はこちら:
SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
UNION句とは異なり、JOIN文は共有する列だけでなく、テーブル全体を結合可能。UNIONはサブクエリを必須としない点に注意。サブクエリは、結合した結果セットをフィルタリングまたはグループ化したい場合のみ必要。多くの場合、2つのUNION文間でサブクエリなしに直接SELECTを使用可能。
スワイプしてコーディングを開始
2つのテーブル category と product を結合する必要があります。これら2つのテーブルの共通カラムは product.category_id と category.id です。
各カテゴリごとの商品の合計数量を求めてください。そのために、product.amount カラムの合計値を計算します。
このカラムにはエイリアス total_amount を付与してください。
クエリの最後で、total_amount カラムを昇順で並べ替えてください。
出力結果には2つのカラムが必要です:category.name と total.amount。
簡単な手順
category.nameカラムと、product.amountテーブルのproductカラムの合計値を取得します。- 2つ目のカラムにはエイリアス
total_amountを付与します。 category文を使ってJOINテーブルを結合します。- 共通カラム
product.category_id = category.idでテーブルを結合します。 - 結果を
category.nameでグループ化します。 total_amountで結果を並べ替えます。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください