2
有三個表是這樣的:想從查詢中排除一些記錄,但是我不知道我怎麼
messages
user_id | message
2 | 'foo'
3 | 'bar'
blacklists
user_id | blacklister_id
1 | 2
users
id | name
1 | 'me'
2 | 'blacklister'
3 | 'my friend'
我 - 與ID用戶:1,從表的用戶。我不想看到我添加到黑名單的用戶的消息(我在黑名單中添加了id爲2的用戶)。 如何在一個查詢中顯示沒有來自黑名單用戶(帶有user_id:2)的消息的消息?
現在我正在做這種方式在Rails的:
@all_messages = Message.all
@filter_messages = Array.new
for message in @all_messages
@blacklist = Blacklist.where("user_id = ? and blacklister_id = ?",current_user.id,message.user_id).first
if @blacklist.nil?
@messages << message
end
end
return @messages
這真的很可怕,我想知道我怎麼能與一個PostgreSQL的查詢重構這個。
我加了「m」。它工作正常!非常感謝! 選擇m。* 來自消息m 內部加入用戶u對m.user_id = u.id 左外部聯接黑名單b對u.id = b.user_id 其中b.user_id爲null – Yud