ユーザーとアイテムの2つのテーブルを持つMySQLデータベースがあります。彼らはこのように見えます:
ユーザー:
id | user_name | desc
--------------------------
1 | john | tall
2 | dave | fat
3 | maria | pretty
アイテム:
id | item_name | color
--------------------------
1 | trousers | red
2 | shoes | blue
3 | shoes | red
特定のIDと名前がキーワードのLIKEであるアイテムのデータベースリストから選択したい。シンプルな検索エンジン用です。私はそのようなクエリを行っています:
SELECT id, user_name, ( SELECT item_name FROM items WHERE id = u.id ) as desc FROM users u WHERE desc LIKE "%shoes%" AND color LIKE "%blue%"
結果として、id = 2、username = dave、itemname =shoesを含む1行が予想されます。これは、クエリを満たす唯一の行だからです。残念ながら、「desc」列がないというメッセージが表示されます。'users'にそのような列がないことは知っていますが、descという名前のサブクエリからそれを取得するようにMySQLに指示するにはどうすればよいですか?
追加の質問:WHERE ... LIKEコマンドとIN(val1、val2、val3)のような配列スタイルで動作することは可能ですか?つまり、loooongクエリの代わりに:
SELECT name
FROM users
WHERE name
LIKE "%john%" OR name
LIKE "%steven%" OR name LIKE "bob%"
短くする:
SELECT name FROM users WHERE name LIKE IN ( "%john%", "%steven%", "%bob%")
前もって感謝します。