0

という名前のテーブルがあり、次のuser_metaようなデータが含まれています。

---------------------------
| user_id | field | value |
---------------------------
|    1    |   1   | Green  |
|    1    |   2   | Square |
|    1    |   3   | Big    |
|    2    |   1   | Red    |
|    2    |   2   | Square |
|    2    |   3   | Small  |
----------------------------

field列は、ユーザーのプロファイル内のフォーム フィールドの番号です。列は、valueユーザーがフォームから送信した値です。

「緑色の大きな四角」を持つすべてのユーザーを返す MySQL クエリを作成するにはどうすればよいですか?

ありがとう!

4

3 に答える 3

2

そのスキーマにこだわっている場合は、サブクエリを使用するとうまくいきます。ただし、それほど速くはなりません。

select userid 
from user_meta
where user_id in (
    select user_id from user_meta 
    where (field = 1 and value = 'Green')
)
and user_id in (
    select user_id from user_meta 
    where (field = 2 and value = 'Square')
)
and user_id in (
    select user_id from user_meta 
    where (field = 3 and value = 'Big')
)
于 2013-02-12T21:44:46.943 に答える
1

SELECT user_id FROM user_meta user_meta1 JOIN user_meta user_meta2 ON user_meta1.UserID = user_meta2.UserID JOIN user_meta user_meta3 ON user_meta2.UserID = user_meta3.UserID WHERE user_meta1.value = 'Green' AND user_meta2.value='Square' AND user_meta3.value='big'

于 2013-02-12T21:57:59.700 に答える