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