2012-03-26 8 views
0

私は 'friends'というテーブルを持っていますが、これにはカラムperson1person2が含まれています。 私はPHPを使用して、ユーザーが人と友人かどうかを確認しています。ジムで、person2は、換言すれば、ボブ 2つの値が2つのフィールドのどちらかにラウンドします

で、私は彼らかどうかを確認したい

  • person1がボブであるとperson2はジム
  • person1です:私はどうかを確認しますクエリを実行したいです両方とも同じ列に存在する。他の人と一緒にいるジムではなく、他人と一緒にいるボブではありません。 同じ行のBobとJimを一緒にする必要があります。行を取得するためにどのようなクエリを使用しますか?

    SELECT person1, person2 FROM friends WHERE (person1=Jim AND person2=Bob) OR (person1=Bob AND person2=Jim) 
    

    もちろん、これはSQLでは機能しませんが、私はこれらの行に沿って何かを探しています。私はテーブルに友情重複を望んでいません。 ご協力いただければ幸いです!

+1

、なぜそれは動作しませんか? – SenorAmor

+0

Doh!私はそれを試していない、私はちょうど擬似コードを書いていたと思った、MySQLがそれを行うことはできません。ありがとう、私は推測する。 – q3d

答えて

0

(ジム/ボブとボブ/ジムと「複製」を含む行)の重複を排除するには、case文を追加する必要があります:

あなたの文字列は引用符でされていない以外
SELECT CASE WHEN person1 = 'Jim' 
    THEN person1 
    ELSE person2 END AS person1Derivation, 
CASE WHEN person2 = 'Bob' 
    THEN person2 
    ELSE person1 END AS person2Derivation 
FROM friends 
WHERE (person1 = 'Jim' and person2 = 'Bob') or (person1 = 'Bob' and person2 = 'Jim') 
関連する問題