• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数キーワードを複数カラムに照会するSQL文?)

複数キーワードを複数カラムに照会するSQL文?

Siegruneの回答

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

and (concat(MyCol1,' ',MyCol2) like '%いちご%' and concat(MyCol1,' ',MyCol2) like '%ソーダ%') とでもすれば手っ取り早いと思いますが。 concat()・・・文字列をつなげます。 http://dev.mysql.com/doc/refman/5.1-olh/ja/string-functions.html#function_concat 具体的には、 ID Concat(MyCol1,' ',MyCol2) -------------------------- 1 いちご みかんジュース 2 ぶどう いちごみるく 3 みかん すいかジュース 4 すいか めろんソーダ 5 めろん ぶどうガム となり、「いちご」と「ソーダ」をorでつなげば、1,2,4がでてきます。 (なお、andでつなぐと、質問にかかれた1,2,4でなく、1件もでてこないですが。) なんで、,' ',をいれているかというと、 6 といち ごりら とあると Concat(MyCol1,MyCol2) では、 6 といちごりら となり、「いちご」が見つかってしまうためです。

litton101
質問者

お礼

Siegruneさん、非常にわかりやすくご回答いただき、大変参考になりました。 結果は完全に期待どおり、複数キーワードで複数カラムからの絞込みができるようになりました。 スペース区切りの複数キーワードについても、元質問を array_push($titles, "concat(MyCol1,' ',MyCol2) like '%$word%'"); とすることでうまくいき、大変助かりました。 ありがとうございました。

関連するQ&A

  • SQL キーワード検索にて

    お世話になります。 DBからSQLでキーワードによる検索をかけるときですが、 二つ以上のワードがあるときに、一つのキーワードがほかのキーワードと かぶってしまう場合、例えば゛、『あいうえお』と『いうえ』等で絞り込むと、 結果的に『あいうえお』が含まれるものだけが該当しますが、これを、 『あいうえお』を含み、更にそれ以外にも『いうえ』が含まれるものを 絞り込むには、どうすればよいでしょうか。 つまり、『あいうえお』のみしか含まれないものは該当しないようにする方法です。 現在のSQLは、 (SELECT * FROM xxxx WHERE tablename LIKE '%あいうえお%' AND tablename LIKE '%いうえ%') のような感じです。 使用しているDBは、MySQL、SQLiteです。 何卒よろしくお願いいたします。

  • 検索結果の出力方法について

    "001","Aさん","ぶどう", "001","Aさん","みかん", "001","Bさん","バナナ", "001","Bさん","イチゴ", "001","Cさん","スイカ", "001","Cさん","メロン", "002",・・・ "003",・・・ 例えば上記の様な検索用のログファイルがあり、”001”で検索した場合、今のところ極々単純に ━━━━━━━ │Aさん|ぶどう| ━━━━━━━ |Aさん|みかん| ━━━━━━━ |Bさん|バナナ| ━━━━━━━ |Bさん|イチゴ| ━━━━━━━ |Cさん|スイカ| ━━━━━━━ |Cさん|メロン| ━━━━━━━ ↑という感じで結果を出力させているのですが、 これを ━━━━━━━ |Aさん|ぶどう| |    |みかん| ━━━━━━━ |Bさん|バナナ| |    |イチゴ| ━━━━━━━ |Cさん|スイカ| |    |メロン| ━━━━━━━ 上記のように、同じ名前の結果が複数ある場合、それを統一して結果を表示させたいと考え、いろいろと悪戦苦闘してみましたが、どうしてもうまくいきません。 ログファイルには手を加えないという事を前提に、下のテーブルのような出力に なるような、構文の書き方がありましたら、是非教えてください。

    • 締切済み
    • PHP
  • SQL文について

    SQLの抽出方法について質問です。 【会員】テーブル関連 すきなフルーツを複数選択できます。 テーブル【MEMBER】と【MEMBER_FRUIT】2つのテーブルで管理 例: Aさんは「りんご」「みかん」「スイカ」がすきです。 Bさんは「りんご」「メロン」がすきです。 Cさんは「みかん」「スイカ」がすきです。 テーブル【MEMBER】 ID、MEMBER_CD、MEMBER_NAME 1  10       Aさん 2  20       Bさん 3  30       Cさん ・ ・ テーブル【MEMBER_FRUIT】 ID、MEMBER_CD、FRUIT_CD 1   10      1 2   10      2 3   10      3 4   20      1 5   20      4 6   30      2 7   30      3 ・ ・ テーブル【FRUIT】 ID、ITEM 1 りんご 2 みかん 3 スイカ 4 メロン 【抽出条件】関連 条件も複数選択できます。 テーブル【SEARCH】と【SEARCH_DETAIL】2つのテーブルで管理 ※会員を抽出条件を管理するテーブル テーブル【SEARCH】 ID、TITLE 1 「りんご」または「メロン」がすきな人 2 「スイカ」がすきな人 ・ ・ テーブル【SEARCH_DETAIL】 SEARCH_ID、FRUIT_CD 1         1 1         4 2         3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・     【SEARCH】のID1の出力結果イメージ MEMBER_CD、MEMBER_NAME 10         Aさん 20         Bさん こんなSQLを作成してみました。 【SEARCH】テーブルをループで1件づつ処理しようと考えています。 他にもっと効率がいいSQLがありますか? よろしくお願いします。 SELECT DISTINCT MEMBER.MEMBER_CD, MEMBER_NAME FROM MEMBER,MEMBER_FRUIT WHERE MEMBER.MEMBER_CD = MEMBER_FRUIT.MEMBER_CD AND MEMBER_FRUIT.FRUIT_CD in ( SELECT FRUIT_CD FROM SEARCH,SEARCH_DETAIL WHERE SEARCH.ID = SEARCH_DETAIL.SEARCH_ID )

  • Excelで複数条件で抽出した複数データを出力

    Excelで複数条件で抽出した複数データを出力したい Shett1のセルAとセルBの複数条件で、Sheet2を検索し一致したSheet2のセルCを Sheet1の該当するセルCに入れたいのです。 それを関数でするのはどうしたらいいのでしょうか? Sheet1 A B NAME ID(タイトル) いちご A01 いちじく A02 かき B01 すいか C01 なし D01 ぱいなっぷる E01 ばなな E02 ぶどう F01 みかん G01 めろん H01 もも I01 りんご J01 Sheet2 A B C 名前 ID 漢字(タイトル) みかん G01 蜜柑 いちご A01 苺 ぶどう F01 葡萄 りんご J01 林檎 もも I01 桃 かき B01 柿 なし D01 梨 すいか C01 西瓜 いちじく A02 無花果

  • エクセル 関数

    りんご   8 みかん   13 ぶどう   5 スイカ   2 いちご   4 の場合 みかん   13 りんご   8 ぶどう   5 いちご   4 スイカ   2 にできますか? =LARGE(* *)で数字は大→小に並べますが隣の文字(果物)も 一緒に動かしたいのです よろしくお願いします

  • SQLの記述方法

    SQL文で次のようなことがしたいのですが、どのような記述をすればよろしいですか? 元データ code hinmei kakaku kosuu ------------------------------- 1 りんご 100 2 2 みかん 0 3 3 いちご 200 4 4 なし 0 1 5 ぶどう 150 0 価格(kakaku)は入力されている(金額がある)ものと無いものに分けて、その中で個数で多い順に並べる。 こんな感じに出力したいです。 code hinmei kakaku kosuu ------------------------------- 3 いちご 200 4 1 りんご 100 2 5 ぶどう 150 0 2 みかん 0 3 4 なし 0 1 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • どうしても、%$keyword%でひっかかると、そちらを食ってしまいます。

    $sql = "select * from $OP_TNAME where option_settingname_num='$session_option_settingname_num'"; if($optionname[1]!='' && $optionname[1]!='a' && $keyword!=''){ $sql .= " and field1 like '%$keyword%'"; } for($i=2;$i<=30;$i++){ if($optionname[$i]!='' && $optionname[$i]!='a' && $keyword!=''){ $sql .= " or field".$i." like '%$keyword%'"; } } $sql .= " order by nowdate"; 上記で、 where option_settingname_num='$session_option_settingname_num'を絶対条件にしたいのですが、うまくいきません。 どうしたらよいでしょうか。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • 果物(野菜)の好き嫌い

    この中から挙げる果物(野菜) 大好き◎ 好き〇 普通△ 嫌い× 回答下さい。 (1) 柿 (2) みかん (3) マンゴー (4) グレープフルーツ (5) ぶどう (6) 桃 (7) バナナ (8) りんご (9) なし (10) キウイフルーツ (11) すいか (12) メロン (13) いちご (14) いちじく (15) さくらんぼ

  • エクセル出の並び替えについて質問

    エクセルの並び替えにおいて質問させていただきます。  A列  B列  C列   D列 りんご  1  バナナ  4 バナナ  2  みかん  6 すいか  3  いちご  8 みかん  4  もも   3 いちご  5  すいか  2 ドリア  6  ぶどう  1 というものを  A列  B列  C列   D列 りんご  1   バナナ  2  バナナ  4 すいか  3  すいか  2 みかん  4  みかん  6 いちご  5  いちご  8 ドリア  6           もも   3         ぶどう  1 というようにA列にならってC,D列の項目を並び替えて、並び替えられないものは下に列挙させるようなやり方がありましたら教えてください。 どうぞ宜しくお願いします。

  • この中から好きな果物BEST3を教えてください

    私は果物が大好きです。 次に挙げる果物の中から みなさんが好きな果物のBEST3を教えてください 柿 イチジク ブドウ みかん グレープフルーツ 桃 さくらんぼ いちご りんご 梨 キウイ パイナップル バナナ マンゴー すいか メロン