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

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

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

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

Q&A

解決済

1回答

535閲覧

複数のテーブルからの出力をしたい!

SmaSTATION

総合スコア29

MySQL

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

0グッド

0クリップ

投稿2021/11/22 03:16

MySQLでの質問です。

以下、定義されているテーブルの一覧です。

/* 自社が開発し,販売している商品のデータ itemId:商品のID name:商品名 releaseDay:その商品の発売日 日付型 descript:商品の説明 type:商品の種類,カテゴリー price:商品の1つの値段 */ CREATE TABLE m_item (itemId int, name varchar(40), releaseDay date, description varchar(40), type varchar(40), price int); /* 社員データ id:社員番号 lastName:名字 firstName:名前 gender:性別 phoneNumber:電話番号,基本携帯の番号 mailAddress:社内用じゃないメアド postNumber:郵便番号 ハイフン付きでtext型 address:現在の住所,都道府県のみ birthday:誕生日 日付型 age:年齢 homeAddress:出身都道府県 blood:血液型 4種類のみのtext型 */ CREATE TABLE m_member (id int, lastName varchar(10), firstName varchar(10), gender varchar(10), phoneNumber varchar(20), mailAddress varchar(50), postNumber varchar(10), address varchar(10), birthday date, age int, homeAddress varchar(10), blood varchar(10)); /* 取引情報 社員が商品を売ったタイミングでレコードが追加される sellId:取引ID memberId:売った人の社員番号 onTime:売った時間 日付,時刻型 itemId:売った商品のID num:売った数 */ CREATE TABLE t_sell (sellId int, memberId int, onTime datetime, itemId int, num int);

これらのテーブルから「 製品毎に、最も売上⾦額の⾼い売上を上げた売上レコードについて、製品名、社員のlastName、売上⾦額、取引IDを表⽰しなさい。複数ある場合は、両⽅表⽰しなさい。」という条件のモノを取り出したいです。

この場合、複数のテーブルから持ってくると思うのですが、fromいかの書き方が分からず困ってます。

select m_item.name, m_member.lastName, (t_sell.num * m_item.price), t_sell.sellId from

サブクエリという考え方がヒントになると助言はいただいたのですが、、、

小さいことでも構わないので何かアドバイスいただけると嬉しいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

手元で試してみたのですが、以下なら一応想定通りの結果になりそうでした。
もっといい書き方はある気がします。

SQL

1SELECT 2 s.itemId "商品のID", 3 i.name "製品名", 4 m.lastName "社員のlastName", 5 i.price * s.num "売上⾦額", 6 s.sellId "取引ID" 7FROM 8 t_sell s 9 LEFT JOIN m_item i ON s.itemId = i.itemId 10 LEFT JOIN m_member m ON s.memberId = m.id 11WHERE 12 concat(s.itemId, i.price * s.num) IN ( 13 SELECT 14 concat(s.itemId, MAX(i.price * s.num)) 15 FROM 16 t_sell s 17 LEFT JOIN m_item i ON s.itemId = i.itemId 18 GROUP BY 19 s.itemId 20 ) 21ORDER BY 22 s.itemId, 23 m.id

投稿2021/11/22 15:06

mmkkmm

総合スコア103

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問