我正在制作一个约会应用程序,很像tindler。用户可以喜欢或不喜欢其他用户,如果两个用户都喜欢对方,他们可以选择与对方聊天。目前正在建设的查询随意拉一个随机分布和他们的照片之一:codeigniter复合只有在行不存在的情况下才会连接
$data = $this->db
->select('users.id,display_name,city,state,gender,users_pictures.picture')
->join('users_pictures','users_pictures.user_id = users.id')
->order_by('id','RANDOM')
->limit(1)
->where(array('users.approved'=>1,'users_pictures.approved'=>1))
->where(array('users.id !='=>$user_id))->get('users')->result_array();
现在,这里就是我很困惑。我有一个表,它由USER_ID,foreign_user_id和EVENT_TYPE(的likes_dislikes像,不喜欢)。
如果您不喜欢或已经喜欢用户,我不希望他们出现在我的结果中。我能想到的处理这个问题的唯一方法是执行第二个查询来检查这个问题,然后再做一个“随机”查询,如果你已经喜欢/不喜欢它们,那么你只会看到你还没有评价过的用户。有没有更好的办法?
任何帮助是非常赞赏:)
这对我来说非常合适,但你的回答激励我朝着正确的方向前进。我能够发现以下工作完美无缺: - > where('NOT EXISTS(SELECT 1 FROM users_likes_dislikes ld WHERE ld.foreign_user_id = users.id AND ld.user_id ='。$ this-> user_id。')' ,'',FALSE) – skrilled
非常感谢你的帮助:) – skrilled