MySQL絞り込み検索の実装方法と結果の表示方法

このQ&Aのポイント
  • MySQLの絞り込み検索を実装する方法について説明します。
  • 絞り込み検索では、セレクトボックスを使用して絞り込み条件を指定します。
  • 指定した条件に基づいて結果を表示するためのSQL文を作成し、データを取得します。
回答を見る
  • ベストアンサー

Mysql 絞り込み検索

絞り込み検索を実装したいのですがうまくいきません。 ご教授していただければ幸いです。 データは次のとおりです。 テーブル名 「zyoho」 カラム  cityid :tenki_id :kansou 1:1:あつい 2:2:乾燥してる 1:2:乾燥してる 3:3:寒い 以上をセレクトボックスにて絞り込み 「kansou」のデータをだしたいのいです。 一つ目のセレクトボックス ・東京 :cityid 1 ・大阪:cityid 2 ・熊本:cityid 3 二つ目のセレクトボックス ・晴れ:tenki_id1 ・雨:tenki_id2 ・雪:tenki_id3 ・何も選択しなかったらすべて表示。 ・例えば東京だけ選ぶと あつい 乾燥してるの二つのデータ結果。 ・天気だけを選ぶと出てくるいくつかのデータ結果。 ・県、天気を選ぶと絞り込まれたデータ結果。 このように絞り込みたいのですがご教授いただければ幸いです。 お願いいたします。

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>・何も選択しなかったらすべて表示。 select cityid , tenki_id, kansou from zyoho; >・例えば東京だけ選ぶと あつい 乾燥してるの二つのデータ結果。 これはこの2つのセレクトボックスでは無理では無いかと思います。 > ・天気だけを選ぶと出てくるいくつかのデータ結果。 select cityid , tenki_id, kansou from zyoho where tenki_id = 1; >・県、天気を選ぶと絞り込まれたデータ結果。 select cityid , tenki_id, kansou from zyoho where cityid = 1 and tenki_id = 1;

a7a7a77a7a74
質問者

お礼

大変参考になりましたありがとうございます。

関連するQ&A

  • 検索結果に対する絞込み

    お世話になってます。 検索条件で絞り込んだ結果に対して、さらに絞込みをかける方法を教えてください。 検索条件を持ち歩いてもいいのですが、30個近くあるのでセッションを使うことにしたのですが、うまくいきません。 具体的には ID 名前 住所 地区 1 山田 東京 関東  2 佐々木 東京 関東 3 鈴木 埼玉 関東 4 岡田 大阪  関西 最初に「関東」を検索条件に検索すると表示画面に3件表示されます。 セッションテスト1($_SESSION["test1"])には検索後の3件のIDを登録しました。 次に表示画面には検索条件のテキストフィールドがあり、「東京」と入力すると2件表示されます。 具体的にはセッションテスト1に値がセットされていれば $kensaku=$_SESSION["test1"]; $sql="SELECT *from test1 where ID=$kensaku and 住所=東京"; としています。 ここまでは絞込みがうまくいき表示できたのですが 戻るボタンで戻ったとき、「埼玉」といれて検索をかけると、1件表示させたいのですが $_SESSION["test1"]に値がセットされていて、 先ほど「東京」で絞り込んだ結果に検索をかけているので、表示されません。 不動産などのサイトを見るとパラメーターで渡しているのですが、セッションを使う方法ではできませんでしょうか。 わかりにくい文章で申し訳ないのですが、 検索結果に対して、さらに検索を何度もかけるという方法を教えていただければ助かります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mysqlで絞り込み

    mysql初心者です。 以下のOFFICEテーブルとSTAFFテーブルがあった場合、 office_idが同じ場合はoffice_nameを取得して office_idが0の場合はoffice_nameに何も入っていない状態で 取得したいのですが、やり方が分からずに困っております。 どなたかご教授ください。 よろしくお願いいたします。 OFFICE office_id office_name 100000  東京 100001  大阪 STAFF staff_id office_id staff_name 100000 100000 ヤマダ 100001 100001 オカベ 100002 0    ワタナベ 希望結果 staff_id office_id office_name staff_name 100000 100000 東京     ヤマダ 100001 100001 大阪     オカベ 100002 0           ワタナベ

    • ベストアンサー
    • PHP
  • MSアクセスで絞り込みを繰返すには?

    MSアクセスについての質問です。 現在のフォームに表示されているレコードを対象にして、絞り込みをしたいと思っています。 性別で絞り込み→その結果に対して地域で絞り込み→その結果に対して年齢で絞り込み といったように、絞り込みを柔軟に何度も付け加えるというのが目標です(amazonの絞り込みのイメージです)。 そこで、formのレコードセットを利用してできないかと考え、以下のようなものを書いてみました。 Dim mycriteria As String mycriteria = "ID = 1" Me.Recordset.FindFirst mycriteria '動作テスト用 Me.Recordset.Filter = mycriteria '本題 実行すると、ID1番へのレコードの移動(findfirst)は起きるのですが、 ID1番だけに絞り込み(filter)はなされません。 filterに対する理解が間違っているのでしょうか。 ご指導願えれば幸いです。 また、ほかに定番の手法などがあれば、お教え願えれば幸いです。

  • 二つのテーブルから一文でセレクトするには?

    以下の二つのテーブルがあるとします。 在庫テーブル zaiko_table id | name | zaiko ------------------- 1 |みかん| 1 ------------------- 2 |りんご| 0 ------------------- 3 |とまと| 1 ------------------- 販売テーブル hanbai_table id | day | tenki ------------------- 1 | 3-2 | 晴れ ------------------- 2 | 3-2 | 晴れ ------------------- 1 | 3-1 | 雨 ------------------- 在庫テーブルのIDはその商品のプライマリーキーです zaikoは1なら在庫有り、2なら在庫なしとします。 販売テーブルのIDは在庫テーブルで決めた商品を表しています。 dayは売れた日付、tenkiはその日の天気です。 3月2日に売れた商品でまだ在庫のある物をセレクトしたいと思います。 該当する商品の名前とそれが売れた日の天気が知りたいのです。 これを一回のSQL文の発行で済ませたいときはどの様に書くのでしょうか?

  • MySQL 条件での絞込みがうまくいきません

    下記の質問をさせていただき、解決いたしましたが、それに関連して新たなご質問です。 http://okwave.jp/qa/q8830319.html 上記質問内容は、 以下のようなデータから、「結果」のような形でデータを取り出したいというもので、「いただいたご回答」の形で一旦解決しました。 usr テーブル +--------+------+ | usr_id | name | +--------+------+ | 1 | 太郎 | | 2 | 二郎 | | 3 | 花子 | +--------+------+ usr_trm テーブル +--------+--------+ | usr_id | trm_id | +--------+--------+ | 1 | 1 | | 1 | 3 | | 1 | 4 | | 2 | 1 | | 2 | 2 | | 2 | 3 | | 3 | 2 | +--------+--------+ cat テーブル +--------+------+ | cat_id | name | +--------+------+ | 1 | 性別 | | 2 | 部署 | +--------+------+ trm テーブル +--------+--------+------+ | trm_id | cat_id | name | +--------+--------+------+ | 1 | 1 | 男性 | | 2 | 1 | 女性 | | 3 | 2 | 総務 | | 4 | 2 | 経理 | +--------+--------+------+ 結果 +--------+------+------+------+ | usr_id | name | cat1 | cat2 | +--------+------+------+------+ | 1 | 太郎 | 1 | 3,4 | | 2 | 二郎 | 1,2 | 3 | | 3 | 花子 | 2 |   | +--------+------+----- +------+ いただいたご回答 select t1.usr_id,t3.name ,group_concat(if(cat_id=1,t1.trm_id,null)) as cat1 ,group_concat(if(cat_id=2,t1.trm_id,null)) as cat2 from usr_trm as t1 inner join trm as t2 on t1.trm_id=t2.trm_id inner join usr as t3 on t1.usr_id=t3.usr_id group by usr_id さらにそこから、例えば「総務に所属する人をランダムにn件」という形で絞り込もうと思い、 WHERE t2.trm_id=3 と ORDER BY RAND() LIMIT 10 を追加したところ、条件通り抽出はされるのですが、結果の「cat1」「cat2」に他のカテゴリーの値が入らなくなりました。 WHERE t2.trm_id=3 を消すと「cat1」と「cat2」に値が入ってきます。 「cat1」と「cat2」に全ての値が入った状態で絞込をするために、どのようにすればよいかわかりません。 アドバイスをいただけると幸いです。

    • ベストアンサー
    • MySQL
  • フォームで絞込み検索機能を持たせるには?

    CGIでキーワード検索システムを使用していますが、FORM等であらかじめ一部の語句だけを設定してお き、絞込み検索機能も持たせたいと考えています。ただデータを渡す際にうまくいきません。 どなたかデータの引渡しに関して、いい方法があればご教授ください。 使用想定例: <form method="POST" action="./search.cgi" enctype="multipart/form-data"> <select name="search"> <option value="" selected="selected">指定なし</option> <option value="ア行">ア行</option> 中略 <option value="ワ行">ワ行</option> </select> <select name="search"> <option value="" selected="selected">指定なし</option> <option value="Men">男性</option> <option value="Women">女性</option> </select> <select name="search">選択項目</select> は追加したいと考えています。 <input type="text" name="search" size="30" value="" /> <input type="submit" name="SUBMIT" value="検索" /> </form> タグ入力で  http://xxxx.com/search.cgi?search=ア行,Men と入力した場合、絞込み検索ができるようにはなっています。(カンマでand検索) ただ、自分の考えている例だと  http://xxxx.com/search.cgi?search=ア行&search=Men&search= のようにデータが渡されてしまい、検索対象全てがヒットしてしまいます。 フォームのNAME属性が同じものを「,」で連結する。みたいな動作ができればベストなんでしょうが 。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • エクセルにて絞込み抽出!

       A列  B列  C列  D列 E列 F列・・O列   1行 月度 店名 店員名 項目 数量 個数 合計 2行  1  東京 A子  初回  10  12  20 3行  1  東京 A子  5回目  20  40  21 4行  3  東京 A子  5回目  30  28  10 5行  4  東京 A子  初回  32  89  11 6行  1  大阪 C男  初回  11  13  12 7行  2  大阪 C男  5回目  77  22  211 8行  3  大阪 D子  初回  33  31  53 9行  1  京都 E子  最終  44  22  23 10行  2  京都 T男  初回  22  54  23 Sheet1(データベース)に上記のようにデータが約3000行あります。 「1月の東京店、A子の初回の合計は?」といった通常オートフィルタで抽出する作業をSheet2のシートで「絞込みしながら検索」するようにフォーム上でしたいのですが。 まず、リストボックス1で1月を選択すると、その抽出結果のみからリストボックス2で店名を選択。店名東京を選択すると同様にその抽出結果のみから店員名をリストボックス3で選択。同様にリストボックス4で項目「初回」を選択すると合計が表示されると言った具合にしたく思います。 参考までにリストボックスからの選択としていますが、よりベストな方法をご教授願います。 Accessで簡単に解決することと百も承知ですが・・・ ようは絞込みしながら検索していく手法を教えてください。

  • PHP・MySQL・javascriptを用いたセレクトボックスによる絞込み検索

    はじめまして!現在PHPを勉強し始めた初心者なのですが、PHP・MySQL・javascriptを用いて、検索機能を実現させたいと思い思考錯誤しているのですが、やりたいことができず、困っております。 やりたいことというのは、MySQLに商品テーブルが存在し、材質やサイズなどのフィールドをいくつか設けているのですが、セレクトボックスを5つ配置し、それぞれのセレクトボックスを選んでいくと他のセレクトボックスが連動して絞り込まれていき、5つ全て選んだ時に1つの商品がヒットするというものを作りたいのです。 一つ目のセレクトボックスからポストされた値を次のセレクトボックスのクエリのwhere句の条件として絞り込んで二つ目を表示させることはできたのですが、三つ目以降どうしていいかわかりません>< 初心者なので、詳しく解説して頂ければ幸いです。 どうか宜しくお願いいたします。 現在製作中のソースですは下記をご参照下さい。 <?php //MySQLクラスファイルの取り込み require_once("mysql.php"); //MySQLクラスファイルの取り込み $mysql = new MySQL; //ポストされた値を変数に格納 $category = $_POST["category"]; $syo_code = $_POST["syo_code"]; ?> <html> <head> <body> <form action="jon2.php" method="post"> <!--jon2.phpは現在のページの名前です--> <select name="category" onChange="this.form.submit()"> <option value="">-------------</option> <? $query = "select * from category"; $result = $mysql->query($query); while ($rows = $mysql->fetch($result)) { ?> <option value="<?=$rows["category_id"]?>"><?=$rows["category"]?></option> <? }//while終わり ?> </select><br /> <select name="syo_code"> <option value="">-------------</option> <? $query = "select syo_code from syohin where category_id=$category"; $result = $mysql->query($query); while ($rows = $mysql->fetch($result)) { ?> <option value="<?=$rows["syo_code"]?>"><?=$rows["syo_code"]?></option> <? }//while終わり ?> </select> </body> </head> </html>

    • 締切済み
    • PHP
  • ACCESS コンボボックスの絞込みについて

    タイトルの件ですが、 テーブルに作成したデータを使って、 フォームのコンボボックス2つに絞込み入力ができるようにしました。          (例1)   (例2)    コンボボックス1: 北海道   東京     コンボボックス2: 札幌市   中野区 本来、そのテーブルにあるデータを取ってくるのかと思いますが、 新データが発生した場合、コンボボックスに直接入力をしたいのです。           (例3) コンボボックス1: アメリカ コンボボックス2: カリフォルニア州 それは可能でしょうか? ちなみにコンボボックス1,2ともプロパティイで「入力チェック」を「いいえ」にすることができませんでした。 どうしたらいいのでしょうか。 教えてください!

  • Accessのコンボボックス 絞込みで登録データは名称に

    アクセスで複数のコンボボックスを使用し絞込み登録を行おうと思っています。 過去の質問等を見てやってみたのですが、 それぞれのコンボボックスの項目テーブルにID、名称があり、その関連付けで登録はされるのですが、実際登録されるデータはIDになってしまいます。 IDで比較してそのIDのものだけを次のコンボボックスに表示するのはいいのですが、実際にフォーム上で選択したものは名称の方がデータベースに登録されるにはどうしたらいいでしょうか?