こんにちは。SQL初心者です。
1つの表から得られた情報を元に、
別の表における条件を満たす個数を合計する処理がわかりません。
まず、gender, medal_choiceの2つの表を作成します。
lang
1CREATE TABLE `gender` ( 2 `user_id` int(11) NOT NULL, 3 `gender` int(11) NOT NULL 4) ENGINE=InnoDB DEFAULT CHARSET=utf8; 5 6INSERT INTO `gender` (`user_id`, `gender`) VALUES 7(100, 0), 8(101, 1), 9(102, 1), 10(103, 0), 11(104, 1);
テーブル名前:gender
(ユーザーごとの性別。0が男性、1が女性)
+---------+--------+ | user_id | gender | +---------+--------+ | 100 | 0 | | 101 | 1 | | 102 | 1 | | 103 | 0 | | 104 | 1 | +---------+--------+
lang
1CREATE TABLE `medal_choice` ( 2 `user_id` int(11) NOT NULL, 3 `medal` text NOT NULL, 4 `amount` int(11) NOT NULL 5) ENGINE=InnoDB DEFAULT CHARSET=utf8; 6 7INSERT INTO `medal_choice` (`user_id`, `medal`, `amount`) VALUES 8(100, 'gold', 1), 9(100, 'silver', 2), 10(100, 'copper', 3), 11(101, 'gold', 2), 12(101, 'silver', 3), 13(101, 'copper', 1), 14(102, 'silver', 4), 15(102, 'copper', 2), 16(103, 'gold', 1), 17(104, 'gold', 6), 18(104, 'copper', 2); 19
テーブル名:medal_choice
(各ユーザーが、gold, silver, copper3種の各メダルを何枚選んだか)
+---------+--------+--------+ | user_id | medal | amount | +---------+--------+--------+ | 100 | gold | 1 | | 100 | silver | 2 | | 100 | copper | 3 | | 101 | gold | 2 | | 101 | silver | 3 | | 101 | copper | 1 | | 102 | silver | 4 | | 102 | copper | 2 | | 103 | gold | 1 | | 104 | gold | 6 | | 104 | copper | 2 | +---------+--------+--------+
この2つの表から、
女性ユーザーのみについて、
各ユーザー別のgoldとsilverの合計数(copperは含まない)
を、totalとして出力する
この処理を実行したいのですが、構文の組み立て方がわかりません。
<求める結果>
例えば、user_idが101のresultは、gold+silver = 2+3=5となる
(1)テーブルgenderから、user_idが1(女性)のみを抽出
(2) (1)の情報を元に、goldとsilverの合計を出力
この2処理を同時にする必要があると考えております。
皆様のお知恵を拝借したいです。宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/22 01:01
2018/07/22 10:32 編集
2018/07/22 10:44
2018/07/22 12:03