2012-01-02 6 views
0

はの私は、このMySQLのテーブルがあるとしましょう:のMySQL - 二度のフィールドを検索

SQL

OK ... typeフィールドを参照してください?タイプ0は、ある人がその言語を学習しているときに、ある人が知っている言語とタイプが1の場合です。

との私はいくつかのデータを持っているとしましょう:あなたが見ることができるように

enter image description here

、メンバー3uid(ユーザID)に対応します。ユーザー3中国語の種類が0ですが、ユーザー1は、1のため、中国語を学習しています。

最後に、私がフォームを作ったとしましょう。 2つの言語選択肢の配列で満たされたフィールドが2つあります。特定の送信後に... $lang_learning出力zh$language_know出力enを出力します。 zhを話し、languageフィールドと矛盾することなくenを学んでいる人物は、基本的に2度探しているので、どのようにして見つけられますか?

ありがとうございました。

答えて

3

ますこれを試してみてください。

SELECT t1.uid 
FROM languages t1 
INNER JOIN languages t2 ON t1.uid = t2.uid 
WHERE t1.language = 'zh' AND t1.type = 0 
    AND t2.language = 'en' AND t2.type = 1; 
0

標準的な 'where'節が行単位でレコードを考慮しているという単純なクエリでは、これを実行できません。 。単純なクエリは、フィールドX 『』は1つのレコードとフィールドXは別で 『B』ですレコードを選択」することができません。このため

を、あなたは参加を必要とするだろう:

SELECT knows.uid 
FROM yourtable AS knows 
INNER JOIN yourtable AS learning ON knows.uid = learning.uid 
WHERE (knows.language='zh' AND knows.type=0) AND (learning.language='en' AND knows.type=1)