2013-12-09 4 views
-2

У меня есть следующие таблицы:Многие ко многим отношения фильтра

user (id, firstname, lastname) 

follow (id, follower_id, following_id) 

Теперь представьте себе, у нас есть пользователи с идентификатором 1, 2, 3, 4, 5

И user_id = 1 уже следующие пользователь 2 и 3.

Теперь я хочу написать запрос, который дает мне user_id's, что я (user_id = 1) утра, не следуя которому (4 и 5).

Может кто-то помочь.

+0

ли вы пробовали какой-либо из решений? –

+0

Да, лучший, я бы сказал, тот, у кого больше всего голосов. –

ответ

1

Это следует сделать это:

SELECT id FROM user 
WHERE 
    id NOT IN 
    (
     SELECT following_id 
     WHERE follower_id = 1 --(or you can use any user i, i used 1 to show an example) 
    ) 
0
SELECT * FROM user_table 
LEFT JOIN follow_table ON user_table.id = follow_table.following_id 
WHERE follow_table.following_id IS NULL 
0

Попробуйте это:

SELECT * FROM user_table ut 
LEFT JOIN follow_table ft ON ut.id = ft.following_id AND ft.follower_id = 1 
WHERE ft.following_id IS NULL