2つフィールドを連結して検索するには
MySQLの初心者です。よろしくお願いします。
1つのテーブルにある2つのフィールドのうち、どちらかにキーワードが入っている場合(両方に入っている場合も含む)を抽出したいのですが、検索するキーワードが1個の場合は、下記のようにすれば、うまく動くのですが、
●1個のキーワードで検索する場合
(例として、2つのフィールドのうちどちらかに「山」のキーワードが入っている場合を抽出)
select * from table WHERE (item_name LIKE "%山%" or outline LIKE "%山%" )
●テーブルの内容(テーブル名:table)
item_name | outline
==========+=========
山がある + 山と川
----------+----------
山がある + 川と森
----------+---------
山がある + 谷と林
---------------------
質問したいことは、上記のテーブルから、item_nameとoutlineのフィールドのうち、2つのキーワード「山」と「川」が両方含まれるレコードを抽出したいです。上記のテーブルでいうと、抽出の結果、1行目と2行目が抽出したいのです。
ちなみに、下記のように記述したら、上記のテーブルで1行目だけ抽出されます。
select * from table WHERE (item_name LIKE "%山%" and item_name LIKE "%川%" or outline LIKE "%山%" and outline LIKE "%川%" )
他にも、下記のように試してみたのですが、うまく抽出できませんでした。
SELECT * FROM table WHERE (concat(item_name,outline) LIKE '%山%' and concat(item_name,outline) LIKE '%川%')
item_nameとoutlineのフィールドを結合して、結合した文字列で、「山」と「川」の両方が入っているレコードを抽出する方法はありますか?
2つのフィールドの文字列をあわせたなかから、「山」と「川」のキーワードが両方含まれるレコードを抽出したいのですが、何かよい方法はありますでしょうか。ご回答よろしくお願いいたします。
お礼
早速の回答ありがとうございます。 内容を簡単に言いますと住宅関連の情報を載せたいと思っています。 笑顔集まる家づくり 省エネルギー住宅 パッシプデザインハウス などがコンセプトのキーワードになるかと思います。