2016-11-01 15 views
1

私が従わないユーザーを取得しようとしていて、それは私と同等ではありません。MYSQLクエリ - 私が従うユーザーと等しくないユーザーを取得します。

は、これまでのところ、私はこのクエリを持っている:

SELECT DISTINCT 
      u.id, 
      u.username, 
      u.profileImage, 
      u.fullname, 
      u.coverImage, 
      u.bio, 
      a.uuid, 
      a.type 
      FROM USERS u 
      JOIN Activity a 
      WHERE NOT u.id = 145 
      AND a.id = 145 
      AND type = 'follow' 

145は、現在のユーザーです。

私は、アクティビティテーブルで、次のを保存し、だから私は私が誰かをフォローすると、ID = 145

それはこのようになります行のIdOtherUserに等しいユーザーを取得する必要はありません。

ID = 145(私)

IdOtherUser = 86(私はUSERSテーブルから取得する必要はありません、私は従って、他の人、。)

タイプ= '続く'(アクションのタイプ)

私と同等ではないユーザー(145人)はすべて正常に取得されていますが、私が従うユーザーと同等のユーザーを取得できないようです。

アイデアは大変ありがとうございます。事前に

おかげ

フィドルは

I want to get the users that is not equal to 123(current user, and the people he is following user(145))

+1

はありませんJOIN条件に該当するレコードを持っている場合、それはユーザーのテーブルからデータを取得する必要がないので、私はあなたにnot exists()オペレータのための一例を紹介し、それは単にチェックしますか?いくつかのサンプル・テーブル・データ、および期待される結果をフォーマット・テキストと同様に追加します。 – jarlh

+0

は、テーブルの構造とその外国 – Beginner

+0

キー 'SELECT DISTINCT u.id、 u.username、 u.profileImage、 u.fullname、 u.coverImage、 u.bio、 a.uuid、 提供しますuは私はフィドル – Beginner

答えて

1

期待される成果を達成するための様々な方法があります。サブクエリを使用して、ユーザーの後に特定のユーザーがいるかどうかを判断することに基づいています。このサブクエリは、派生テーブル(from句)、またはnot in()またはnot exists()オペレータに含めることができます。あなたはどこの基準

select * 
from users u1 
where u1.id<>145 --not me 
    and not exists (select 1 
        from activity a 
        where a.id=145 --users I follow 
         and a.IdOtherUser=u1.id 
         and a.type='follow') 
+0

ユーザのIDを使って投稿テーブルのusersテーブルに参加するだけです。しかしこれは別個の質問であるべきです。 – Shadow

関連する問題