• 締切済み

あいまい検索 続

5qooの回答

  • 5qoo
  • ベストアンサー率48% (20/41)
回答No.5

>Like [条件] & "*" 原因はこれではないでしょうか? これだと、1月の場合は"1*"となり"1"と1の後ろに何か入力された値= "1月、10月、11月、12月"がもちろん抽出対象になります。 抽出をBetween関数を使って開始と終了の期間を指定すればどうでしょう。

bokujyou
質問者

お礼

ありがとうございます。たしかにBETWEENだとエラーはないと思います。しかし、コンボでワンクリックが好みで難しいですね

関連するQ&A

  • 【続】PHPのsqlでキーワード検索【急】

    前回、前々回の質問で解決しなかったので質問を変えて改めて質問させて下さい。 ※php、データベース共に初心者ですので専門用語での指摘には対応出来ませんので宜しくお願いします。 前々回http://oshiete1.goo.ne.jp/qa3220932.html 前回http://oshiete1.goo.ne.jp/qa3234825.html データベースからデータを表示するPHP、「list.php」と 検索してlist.phpに渡す「top.php」があります。 現在list.phpに if($fn == "sr"){//サーチ $mainimage="navisearch.jpg"; $table_tmp = ""; $query_tmp = ""; if($munic != 9999){//地域指定があるとき if($munic == 1){//1の時 if($area != 9999){ //1でエリア指定があるとき $table_tmp = ",Town_table"; $query_tmp ="and To_id = St_town and To_area = ".$area; }else{//1でエリア指定が無いとき $query_tmp ="and St_munic = ".$munic; } }else{//1以外の時 $query_tmp ="and St_munic = ".$munic; } } if($lowcat > 0){ $query_tmp .= " and Li_id = ".$lowcat; } if(strlen($key) > 0){ $query_tmp .= " and (St_mainname like ?"%".addslashes($key)."%?" or St_subname like ?"%".addslashes($key)."%?" or St_freeheadtxt like ?"%".addslashes($key)."%?" or St_freetxt like ?"%".addslashes($key)."%?" or St_movietxt like ?"%".addslashes($key)."%?")"; } … というphpがあり、地域検索、エリア検索、キーワード検索が出来るようになっています。 これを地域指定、エリア指定両方無い時も 地域指定1、エリア指定9999とするように出来ないでしょうか? 理想は地域、エリア検索がなくキーワード検索のみにしたいのですが、地域、エリア検索部分のphpを消すとキーワード検索が働かなくなります。 (エラーは出なくなりましたがキーワードを無視し、データベース全てのデータを返して来る状態です) すぐに回答欲しいです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • あいまい検索について

    成年月日のテーブルで空白と1から12月まで入っているデータで、 LIKEフォームのあと&”*”にすると、検索条件を空白にしたら、1月から12月の方は抽出されますが、空白の方は出来ません。他に検索条件があるフォームでして、仮に男性に絞り生年月日は空白を含めすべての場合、パラメータの成年月日はどうすればよいでしょうか。データベース初心者で勉強中です。教えてください。

  • SQL文を教えてください

    1-a,1-b,2-a,2-b,3-a,3-b,4-a,4-b,5-a,5-bというカラムがあるとき。 以下の条件を満たす行を抽出するのに、 検索速度の早いSQLの書き方はありますか? (条件)N-aに値有りのとき、N-bは値有り  ただし、1-aから5-a全て値なしのときは対象外 ※こんな書き方は思いつくのですが、遅そうで・・・ ( (1-a is not null AND 1-b is not null) or (2-a is not null AND 2-b is not null) or (3-a is not null AND 3-b is not null) or (4-a is not null AND 4-b is not null) or (5-a is not null AND 5-b is not null) ) and not(1-a is null AND 2-a is null AND 3-a is null AND 4-a is null AND 5-a is null)

  • accessで空白の時の抽出

    access2000を使っています。まだ初心者なので難しい事はできないのですが、クエリを使って絞り込み検索のフォームを作っています。 テーブル内のデータで空白のデータがあります。その際にクエリの抽出条件にlike iif(is null([forms]![formA]![テキスト100]),"*","*"&[forms]![formA]![テキスト100]&"*")としています。フォームのテキストが空白のときは全て抽出するという条件を満たす予定で設定したのですが、テーブル内のデータが空白の物が抽出できません。データが空白がない様にすればいいのでしょうが、クエリの条件で設定できないものでしょうか?データはテキスト型です。

  • フィールドのデータ型で検索結果に差が出る[2]

    正確にはフィールドのデータ型と検索条件「And・Or」の違いで検索結果に差が出るになります。 [アドバイス訴求の背景] 別件「フィールドのデータ型で検索結果に差が出る」でアドバイスをお願いして居りました者です「終了」。実は別の式もアドバイス頂いていた経緯があり、そちらで再度試してみたところメモ形でも「Or」条件であれば、正常に検索できることが確認できました。実は、アドバイスを頂いた記述を私が間違って設定していた為、別件の質問の通り「メモ形」は検索できていませんでした。本当に申し訳ございません。以上の経緯「私のプア」もあり、再度アドバイスをお願いすることに気も引けましたが、アドバイスを提供して下さった方に失礼であると思い投稿しました。 [気になっていること] クエリのパラメータ検索「複数パラメータ」に於いて、フィールドのデータ型が「メモ形」で「And」条件の時だけ検索できません。 1,データベースオブジェクト「簡略」 ・テーブル:世界情報 ・フォーム:世界情報フォーム ・フィールド名:情報   フィールドサイズ:メモ ・フォールド名:タイトル フィールドサイズ:200 ・世界情報クエリ1,2,3,4,「パラメーター(複数パラメータ表示)」 2,フィールド名「情報(メモ形)」を検索フィールドに指定「下記の式(Or)」した時は問題なく検索結果を返します。 Like "*" & [Forms]![情報]![検索1] Or Like "*" & [Forms]![情報]![検索2] Or Like "*" & [Forms]![情報]![検索3] & "*"(情報フィールドの抽出条件にのみ記載) 3,フィールド名「情報(メモ形)」を検索フィールドに指定「下記の式(And)」した時は全て「登録した情報はありません」を返します。 Like "*" & [Forms]![情報]![検索1] And Like "*" & [Forms]![情報]![検索2] And Like "*" & [Forms]![情報]![検索3] & "*"(情報フィールドの抽出条件にのみ記載) ※検索1と検索2にしても結果は同じでした。 4,その他 Like "*" & [Forms]![情報]![検索1] And Like "*" & [Forms]![情報]![検索2] And Like "*" & [Forms]![情報]![検索3] & "*" の式をクエリの記載場所が異なるので「式1: 」は付いていません。 以上ですが、宜しくお願いします。

  • 複数条件検索について

    よろしくお願いします。 検索条件として以下3つあるとします。 1.人数指定 2.年齢指定 3.住所指定 普通ですとこの条件全てを満たしたデータを検索するように ANDなどでしますが、この3つの条件がランダムな場合(例えば 1と2、1と3などなど・・)、ANDですと全て揃ってないと 検索結果が得られません。ORですとどちらかに合った検索結果になってしまいます。 ランダムな組み合わせでその条件を全て満たした結果を得るには何か うまい方法はありますでしょうか?? 説明が下手で申し訳ありませんが、よろしくお願いします。 環境 OS:winXP PHP4.4.4 apache2 mysql4

    • ベストアンサー
    • MySQL
  • accessのnot検索

    access2000で テーブル[日付](yyyy/mm/ddで入力されています)   [内容](なんでも。空白の場合もあります) フォーム  「日付」(yyyy/mm/ddのみ入力可能にしています)  「NGword」(どんな文字でも入力できます) という項目を作成し・・・ 1、クエリでフォームの「日付」に入力したものかつ 2、フォームの「NGWord」を含まないレコードのみを抽出したいのですがうまくいきません。 「日付」「NGword」が空白の場合は入力された条件のみ適用させたいです。 (「日付」・「NGWord」が両方空の場合は全レコード抽出したいです) クエリを作成して・・・ [日付]の抽出条件を like "*" & forms![フォーム名]![日付] & "*" で [内容]の抽出条件を (not like "*" & forms![フォーム名]![NGword] & "*") or (is null) で設定したのですがうまくいきませんでした・・・泣 宜しくお願いします。

  • Accessのクエリの検索条件にフォームのテキストボックスを指定したんですが…

    WinXPのAccess2002です。 クエリの検索条件には、[]カッコを用いてフォーム上のテキストボックスを指定できますが、 Nullじゃないものを検索しようと、is not nullと 入力して、試験的にクエリを起動させたところ、 「式が複雑なので…」というメッセージが帰ってきました。 ですが、そのテキストボックスに値を直接指定(数字を入力 するフィールドなんですが、039とか555とか)すると、エラーも 起きずにクエリは実行してくれます。 "is not null"などの場合は、特別な指定の仕方があるのでしょうか。 どうぞご教示のほどよろしくお願いします。

  • 日付の範囲検索で

    ACCESSで商品の販売管理システムを作っています。 商品マスタの中に、販売開始日、販売終了日のフィールドがあるのですが、常時販売している商品はこのフィールドは空になっています。 また、今まで販売していたけど近々終了する商品や、近々販売を開始するけど、終了が未定の商品は片方に日付が入り、もう片方は空になっています。 こういう状態で指定した日にちに販売されている商品の一覧を作りたいのですが、where の書き方が分かりません。 何も考えずに書くと、以下のようになると思います。 SELECT 商品マスタ.* FROM 商品マスタ WHERE (販売開始日 IS NULL AND 販売終了日 IS NULL) OR (販売開始日 IS NULL AND 販売終了日 >= #2003/12/15#) OR (販売開始日 <= #2003/12/15# AND 販売終了日 IS NULL) OR (販売開始日 <= #2003/12/15# AND 販売終了日 >= #2003/12/15#) ちょっと長いので、もっとスマートに書く事はできないものでしょうか。 よろしくお願いします。

  • sql文のwhere句について

    <環境>sqlserver SQLでパラメータが空白であれば全件取得、パラメータに値が設定されている場合には 条件にHITするデータを抽出したいのですが、一本のクエリで抽出することができるのでしょうか? 空白時パラメータは以下のとおり入ってきます。 @no="" …完全一致 @name="%%" …部分一致 例) SELECT * FROM テーブル WHERE (NO = @no) and ((@name IS NULL) OR (@name IS NOT NULL) AND (NAME LIKE @name)) NAMEは上記クエリにて取得できています。 NOのところはどのようにすればよいでしょうか?