ruby-on-rails – 如何将参数传递给LEFT JOIN?
发布时间:2020-12-16 20:04:40 所属栏目:百科 来源:网络整理
导读:**修改为更好的可理解性** **编辑重新命名为文档** 我想用给定用户的投票记录获取所有用户的文档记录,如果该用户没有投票支持某些文档记录,我仍然希望得到所有的文档记录,而无需投票. 例如: +------------+--------------+------+|document.par1|document.p
**修改为更好的可理解性**
**编辑重新命名为文档** 我想用给定用户的投票记录获取所有用户的文档记录,如果该用户没有投票支持某些文档记录,我仍然希望得到所有的文档记录,而无需投票. +------------+--------------+------+ |document.par1|document.par2| vote | +------------+--------------+------+ | 2 | z | y | | 3 | w | NULL | | 4 | x | NULL | +------------+--------------+------+ 在Ruby on Rails上,如果我尝试这样: 冷杉试试: Document. joins("LEFT JOIN `votes` ON `votes`.`v_id` = `document`.`id` AND `votes`.`giver_id` = ?",user_id). where('document.creator_id = ?',user_id,.....). select('votes.*',`document.param1') 我收到这个错误: RuntimeError in UserDocumentsController#show unknown class: Fixnum II.第二尝试: Document. joins("LEFT JOIN `votes` ON `votes`.`v_id` = `document`.`id`"). where('document.creator_id = ? AND `votes`.`giver_id` = ?',`document.param1') 仅返回有投票记录: +-------------+-------------+------+ |document.par1|document.par2| vote | +-------------+-------------+------+ | 2 | z | y | +-------------+-------------+------+ 所以没有2条记录.. **更新,此解决方案工作** III.我的第三个尝试,谢谢你的帮助Mischa: Document. joins("LEFT JOIN `votes` ON `votes`.`v_id` = `document`.`id`"). where('document.creator_id = ? AND (`votes`.`giver_id` = ? OR `votes`.`giver_id` IS NULL)',user_id). select('votes.*',`document.param1') +-------------+-------------+------+ |document.par1|document.par2| vote | +-------------+-------------+------+ | 2 | z | y | | 3 | w | NULL | | 4 | x | NULL | +-------------+-------------+------+ 解决方法
这将为您提供您需要的结果集:
Document. joins("LEFT JOIN `votes` ON `votes`.`v_id` = `document`.`id`"). where('document.creator_id = ? AND (`votes`.`giver_id` = ? OR `votes`.`giver_id` IS NULL)',`document.param1') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |