2009-05-12 9 views
0

私は、主にサイトの周りに彼の存在を確認するために、ユーザーが持つことができるいくつかの選択肢があります。別のテーブルのユーザーオプション:オプションがあるかどうかを確認するベストプラクティスは何ですか?

の表は、このようなものです:

ユーザー:

id=1 
username=stackoverflow 
password=oSKAJMMS; 
address=xyz 
... 

オプション:私は彼が特定のオプションを持っているかどうかを確認する必要がある時点で

user_id=1 
option=AD3 

user_id=1 
option=AC1 

(オプション:AD3、AC1など)オプションを持たないユーザが単に「オプション」テーブルに存在しないことを念頭に置いてください。

このためのベストプラクティスは何ですか?私はJOINについて書いていますが、stackoverflowを読むたびに、よりシンプルで効果的なメソッドを見つけるので、何をすべきか尋ねます!

答えて

2
SELECT * 
FROM users u 
WHERE EXISTS (
     SELECT 1 
     FROM options o 
     WHERE o.user_id = u.id 
       AND o.option = 'AC1' 
     ) 

あなたはoptions (user_id, option)

+0

おかげでインデックスを持っていることを確認し、私は最初のインデックスせずにしようと、クエリが33秒かかりました! また、私はあなたがuを設定してuをクエリに使用できることを知りました。私はそのような事を知らなかった、ありがとう! – 0plus1

関連する問題