重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは、SQL文の書き方について悩んでいます。

PHPとSQLITE3で複数キーワードの検索プログラムを作ろうとしています。

自分用の日記をSQLITE3のDBに記録しているもので、
main のカラムに本文を書いて、 
kuwake で、hobby、work、other などカテゴリー分けをしています。
※一つの記事にたいして、選択可能なkuwakeは一つだけです。

趣味(hobby) と 仕事(work) のカテゴリー の中で、
複数文字検索をしたいのですが、 以下のSQL文で動作しませんでした。 
正しいSQL文の書き方をご教授ください。よろしくお願いします。

"SELECT 'hobby' and 'work' ''FROM '$table' WHERE 'main' LIKE '%キーワード1%' and main LIKE '%キーワード2%'

■テーブルの詳細↓
CREATE TABLE table (id INTEGER PRIMARY KEY, main TEXT, kuwake TEXT, date TEXT);

A 回答 (2件)

たとえばこんな感じです。



select *
from table
where kuwake in ('hobby', 'work')
and (main LIKE '%キーワード1%' or main LIKE '%キーワード2%');
    • good
    • 0
この回答へのお礼

ありがとうございます。おかげさまで無事思い通りの結果が出せました。
助かりました。本当にありがとうございました^^

お礼日時:2013/04/05 18:27

私はSQLITE3を知りませんので完全について動作するSQLを


提示することはできません。
しかし、SQLの基本はどのDBでも変わらないと思いますので
いくつか指摘させていただきます。
ご確認の上、ご自分で正しいSQLに到達されますよう。。。

まず
selectの対象が間違っています。
欲しいのは本文でしたら、対象は格納先であるmainでしょうか

次にwhere句ですが、ここには通常検索条件を指定します。
ご自分で「趣味(hobby) と 仕事(work) のカテゴリー の中で」検索したい
と仰っているので、これもwhere句で指定してやるべきでしょう。
但し、単純にandで繋げては動かないSQLになります。
kuwakeには1つしか選択できない=1つしか格納されていない
のですから、「趣味(hobby)か仕事(work)」を条件とする必要があります。
どちらか(あるいはいずれか)が一致する条件を指定するには、
条件をorで繋げます。
A または B → A or b
※A,Bはそれぞれ1つの条件(date=now のような)です。
あとはorの影響する部分を括弧()でくくります。
※加算乗算の入り乱れた式で加算部分を括弧で囲むようなイメージです。

以上お役に立てば幸いです。
    • good
    • 0
この回答へのお礼

すぐに解答をしていただき、誠にありがとうございます。
SQL文を分かりやすく説明していただき本当に感謝です。
ありがとうございました。

お礼日時:2013/04/05 18:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!