
mysplで取得したいデータの取り方がわかりません
sql
1CREATE TABLE `db_name`.`monsters` 2( 3 `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'モンスターid' , 4 `monster_name` VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'モンスター名' , 5 PRIMARY KEY (`id`) 6) 7ENGINE = InnoDB; 8 9CREATE TABLE `db_name`.`wazas` 10( 11 `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '技id' , 12 `waza_name` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '技名' , 13 PRIMARY KEY (`id`) 14) 15ENGINE = InnoDB; 16 17CREATE TABLE `db_name`.`learn` 18( 19 `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '覚える技id' , 20 `monster_id` INT(11) NOT NULL DEFAULT '0' COMMENT 'モンスターid' , 21 `waza_id` INT(11) NOT NULL COMMENT '技id' , 22 PRIMARY KEY (`id`) 23) 24ENGINE = InnoDB;
sql
1INSERT INTO 2.monsters 3 (monster_name) 4VALUES 5 ("スライム"), 6 ("ゴブリン"), 7 ("ネクロマンサー"), 8 ("オーク"), 9 ("キングスライム"); 10 11INSERT INTO 12.wazas 13 (waza_name) 14VALUES 15 ("たいあたり"), 16 ("きりさく"), 17 ("ファイアー"), 18 ("サンダー"), 19 ("自己再生"); 20 21INSERT INTO 22.learn 23 (monster_id,waza_id) 24VALUES 25 ("1","1"), 26 ("1","4"), 27 ("2","1"), 28 ("2","2"), 29 ("3","1"), 30 ("3","3"), 31 ("3","4"), 32 ("3","5"), 33 ("4","3"), 34 ("4","5");
簡略版ですが、上記の様なdbがあります
検索画面を作りたくて複数の指定した技を覚えるモンスターを取得したいのですが、うまくいきません
理想では、
検索画面でファイアーとサンダーを覚えるモンスターで検索したら、ファイアーとサンダー両方覚えることのできる、ネクロマンサーだけが検索に出てきて欲しいです
monstersとlearnをjoinしたらいけそうだと思ったのですが、技を複数指定する方法が分かりませんでした
実際のデータはモンスターと技は数百、覚える技のデータは数万ほどになります
できる限り、一発のsqlで素早く取得したいです
dbの設計をこうした方がいいなどのアドバイスなどもあればお願いします
どうかご教授よろしくお願いします
回答1件
あなたの回答
tips
プレビュー