出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
[3985] 検索エンジンを作っているのですが |
投稿者:Karyさん 2004/01/20 10:25:45 |
こんにちは。いつも拝見させていただいています。 検索エンジンを作っているのですが、解らない所があるので教えていただけますか。 検索条件を付加していく時に、SQL文のつなぎ方がわからず困っています。 データベースに保存してあるデータを呼び出すのですが、 まずテーブルが tb1と tb2 の2つあります。 tb1 は cateid (カテゴリID) とcategory(カテゴリ)の2項目です。 tb2 は cateid (カテゴリID)とtitle (タイトル) name (著者名)の3つです。 (テーブルは2つに分けなければならないことになっています。) 検索画面ではカテゴリを指定できるコンボボックス、キーワード欄。 条件として部分一致、前方一致、後方一致があり、このうちの1つを指定できます。 また検索範囲として「タイトルから検索」と「著者名から検索」があります。 検索範囲はチェックボックスとなっており、指定しなくても指定してもよいことになってます。 カテゴリだけを指定した場合は、指定したカテゴリのデータを全て抽出します。 そして、キーワードだけが入力されている場合、そのキーワードのものを全て抽出します。 (タイトルがキーワードのものや、著者名がキーワードのものでもどちらでもよい) また、カテゴリとキーワードが指定されていれば、そのカテゴリーの中のものでキーワードのものを取り出すという感じです。 私がわからないのは条件を付加するにつれてand や orをどのようにSQL文で繋げていくかということです。 たとえば、 カテゴリが「小説」、キーワードが「A」、検索範囲が「タイトルから検索」であれば、SQL文は StrSQL = "select tb1.category,tb2.title,tb2.name from tb1,tb2 _ where (tb1.cateid) = (tb2.cateid) (テーブルの結合) and ((tb1.category) = '" & Request.Form("cate") & "')" (指定されたカテゴリ) and ((tb2.title) = '"&Request.Form("word")& "')" (タイトルが「A」のもの) となりますが、 「著者名から検索」という条件を追加したら、 StrSQL = "select tb1.category,tb2.title,tb2.name from tb1,tb2 _ where (tb1.cateid) = (tb2.cateid) (テーブルの結合) and ((tb1.category) = '" & Request.Form("cate") & "')" (指定されたカテゴリ) and (((tb2.title) = '"&Request.Form("word")& "')" (タイトルが「A」のもの) or ((tb2.name) = '"&Request.Form("word")& "'))" (著者名が「A」のもの) というふうに、指定されたカテゴリの後にカッコとorが付加されなければなりません。 ここの所のSQL文の書き方がわかりません。 Ifを使って・・というのはわかるのですが、どう書けばいいのか・・ また部分一致条件とかが付加されると・・と思うと余計解らなくなります。 選ばれた条件によって臨機応変にSQL文を変化させるにはどうすればいいのでしょうか。 どなたかアドバイスいただけますか。 |
![]() ![]() |
![]() ![]() |
TreeBBS For ASP V.0.1.3 |