mysql db で正しいクエリを探しています。テーブルがあるとしましょう:
ユーザー:
id | user_name | desc
--------------------------
1 | john | tall
2 | john | fat
3 | maria | pretty
アイテム:
id | item_name | color
--------------------------
1 | trousers | red
2 | shoes | blue
3 | shoes | red
私の検索エンジンはデータベースを検索して、クエリで結果を選択します:
SELECT i.item_name, i.color, u.user_name, u.desc
FROM users u, items i
WHERE u.id = i.id
AND item_name REGEXP $keywords
AND user_name REGEXP $keywords
変数 $keywords は次のようになります。
$keywords = explode(' ', $_POST['keywords']);
$keywords = implode('|', $keywords);
$keywords = 'john trousers' の場合、すべて正常に動作します。id = 1 のユーザーを取得します。問題ありません。しかし、$keywords = 'john' を設定すると、空の文字列が返されます。その理由もわかっています。item_name に「john」がないため、AND 条件が false を返します。問題は: $keywords = "john trousers" で user = 1 を返し、$keyword = 'john' が id = 1 と id = 2 の 2 行を取得する正しい正規表現は何ですか?
前もって感謝します。