加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读