質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

1456閲覧

4つのテーブルから合計を算出するSQLを教えていただきたいです。

fanmiya

総合スコア1

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/08/02 09:05

以下の4テーブルから購入者名別の合計金額を求めるSQL文を教えていただきたいです。

明細テーブル(明細ID,伝票ID,商品ID,数量)
伝票テーブル(伝票ID,購入者ID)
商品テーブル(商品ID,商品名,価格)
購入者テーブル(購入者ID,名前)

同じ名前のカラムは外部キーになっていると考えてください。
これらのテーブルから購入者が購入した金額の合計を算出するクエリを教えていただきたいです。

テーブルデータの想定は以下です。
明細テーブル
(1,1,2,1)
(2,1,1,3)
(3,2,3,3)
(4,3,4,3)

伝票テーブル
(1,1)
(2,2)
(3,3)

商品テーブル
(1,消しゴム,100)
(2,鉛筆,50)
(3,ホッチキス,400)
(4,ハサミ,200)

購入者テーブル
(1,田中太郎)
(2,井上次郎)

このようなテーブルデータであった場合、最終的に以下のような結果が求められるようにしたいです。
(購入者テーブル.名前,合計金額)
(田中太郎,350)⇒田中太郎は商品ID1の消しゴムを3つ,商品ID2の鉛筆1本の合計金額
(井上次郎,1200)⇒井上次郎は商品番号3のホッチキスを3個の合計金額

情報に不足などございましたらすぐに追記致しますので、ご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2020/08/02 10:19

SQLで使われるテーブルはCREATE TABLEされている必要があります。質問のテーブル定義の説明もCREATE TABLEに変更。 SELECTされるデータもINSERTされている必要があります。INSERT文でデータで共に https://teratail.com/help/question-tips#questionTips3-7 の [コード] に修正してもらえると実際にSQLを実行できるので適切なコメントが付き易いです。
Orlofsky

2020/08/02 10:19

教授 → 教示
sazi

2020/08/02 10:30

DBの種類によって記述が違う部分がありますので、タグは特定して下さい。
guest

回答1

0

ベストアンサー

基本的なSQLですのでたいていのDBで大丈夫だと思います。

sql

1SELECT 2 購入者テーブル.名前, 3 Sum(商品テーブル.価格 * 明細テーブル.数量) AS 合計金額 4FROM 5 ((明細テーブル INNER JOIN 伝票テーブル ON 明細テーブル.伝票ID = 伝票テーブル.伝票ID) 6 INNER JOIN 購入者テーブル ON 伝票テーブル.購入者ID = 購入者テーブル.購入者ID) 7 INNER JOIN 商品テーブル ON 明細テーブル.商品ID = 商品テーブル.商品ID 8GROUP BY 9 購入者テーブル.名前;

投稿2020/08/03 00:57

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問