MySQL 8.0.22 を使用して複数テーブルからSELECT文を使用して結果を抽出しようとしています。
下記の3つのテーブルを作成しました。
MySQL
1CREATE TABLE `users` ( 2 `id` int NOT NULL AUTO_INCREMENT, 3 `user_id` varchar(20) NOT NULL, 4 `pass` varchar(64) NOT NULL, 5 `name` varchar(10), 6 PRIMARY KEY (`id`) 7) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
MySQL
1CREATE TABLE `shop` ( 2 `shop_id` int NOT NULL AUTO_INCREMENT, 3 `name` varchar(255) NOT NULL, 4 `input_time` timestamp NOT NULL, 5 `input_user_id` int NOT NULL, 6 PRIMARY KEY (`shop_id`) 7) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
MySQL
1CREATE TABLE `shop_history` ( 2 `id` int NOT NULL AUTO_INCREMENT, 3 `user_id` int NOT NULL, 4 `shop_id` int NOT NULL, 5 `update_time` timestamp NULL DEFAULT NULL, 6 `update_text` varchar(255) DEFAULT NULL, 7 PRIMARY KEY (`id`) 8) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
各テーブルに下記のテストデータを保存します。
DATA
1insert into users(user_id, pass, name) values('testName', 'testPass', 'テスト'); 2insert into users(user_id, pass, name) values('adminName', 'adminPass', '管理者'); 3insert into shop(name, input_time, input_user_id) values('サンプル店', now(), 1); 4insert into shop(name, input_time, input_user_id) values('テスト店', now(), 2); 5insert into shop_history(user_id, shop_id, update_time, update_text) values(2, 1, now(), 'テスト');
このデータベースを使用して
shop.name shop.input_time users.name shop_histroy.update_time users.name
を抽出しようとしています。
発生している問題・エラーメッセージ
以下のSQL文を実行したところ思った結果になりませんでした。
SQL
1select 2s.name shopName, 3s.input_time, 4u.first_name userName, 5sh.update_time, 6u2.first_name updateName 7from shop as s inner join users as u 8on s.input_user_id = u.id 9inner join shop_history as sh 10on s.shop_id = sh.shop_id 11join users as u2 12on u2.id = sh.user_id 13group by s.name
現在の結果と想定している結果
上記SQL文を実行するとshop_historyテーブルに入っているデータが表示されず、
shopテーブルにあるデータが表示されてしまいます。
望む結果としては、shop_historyにデータがあれば、そちらを優先して表示したいです。
ご教授をお願いいたします。
回答1件
あなたの回答
tips
プレビュー