0

タイトルがはっきりしないかもしれませんが、適切な名前を付けることができませんでした。

次のテーブルを使用して、テーブル内の人のすべての友達を選択しようとしています。

Table friends
column name user1
column name user2

私は次のようにクエリを取得しました

SELECT users1.username,users2.username FROM friend_request
 JOIN users AS users1 ON friend_request.user1 = users1.id
  INNER JOIN users AS users2 ON friend_request.user2 = users2.id

ただし、これは明らかに両方の名前を返します。

Foobar | Dummy

1つの結果で問題の友達を除外/取得するにはどうすればよいですか?user1.usernameが私が探しているものではないかどうかを明確にするために、showusers.2usernameとversevisaを表示します。

Dummy

前もって感謝します。

編集:

2つの列のどちらに正しいユーザーが含まれているかわかりません。ダミーを探していますが、参加するとFoobarとDummyが表示されますが、ダミーを知りたいだけです。foob​​arは自分の友達を探している人です。お役に立てれば。

4

1 に答える 1

0

これはあなたが望むものを手に入れるはずです...組合をしてください。最初のクエリは、「user2」フィールドで開始する人が期待されるwhere句を適用します。したがって、「Other」人(user1フィールド)に参加します。次に、ユニオンは逆を適用します... 1番目の位置にある主要な人物(user1)を探しますが、user2フィールドで結合を実行します(他の人物)

SELECT 
      u.username
   FROM 
      friend_request fr
         JOIN users u 
            ON fr.user1 = u.id
   where
      fr.user2 = ThePrimaryPerson
UNION
SELECT 
      u.username
   FROM 
      friend_request fr
         JOIN users u 
            ON fr.user2 = u.id
   where
      fr.user1 = ThePrimaryPerson
于 2012-05-30T12:54:31.170 に答える