【问题标题】:Convert Inner Join to Left Join in rails在rails中将内连接转换为左连接
【发布时间】:2016-05-17 22:23:23
【问题描述】:

我有一个 rake 文件,上面有这段代码。 .

   if circle[:conference2_total_channels].present?
                conf = Confbridge.find(:all, :conditions => ["confbridges.cid = ?",circle.circle_number],
                :joins => [:confbridge_participants],
                :select => 'confbridges.id, confbridges.confno, confbridges.max_member, (confbridges.max_member - 5) AS additional , (confbridges.max_member - IFNULL(confbridge_participants.active,0)) AS vacant')

            end

返回的代码是

SELECT confbridges.id, confbridges.confno, confbridges.max_member, (confbridges.max_member - 5) AS additional , (confbridges.max_member - IFNULL(confbridge_participants.active,0)) AS vacant FROM `confbridges` **INNER JOIN** `confbridge_participants` ON `confbridge_participants`.`confbridge_id` = `confbridges`.`id` WHERE (confbridges.cid = '0090000092')

它是INNER JOIN

如何将其更改为 LEFT JOIN

喜欢这个

SELECT confbridges.id, confbridges.confno, confbridges.max_member, (confbridges.max_member - 5) AS additional , (confbridges.max_member - IFNULL(confbridge_participants.active,0)) AS vacant FROM `confbridges` **LEFT JOIN** `confbridge_participants` ON `confbridge_participants`.`confbridge_id` = `confbridges`.`id` WHERE (confbridges.cid = '0090000092')

谢谢:)

【问题讨论】:

  • 您使用什么版本的导轨?这种语法在第三版的某个地方被弃用了
  • 看来您使用的是非常旧的 Rails 版本。你不是吗?

标签: mysql ruby-on-rails ruby join


【解决方案1】:

我会这样写:

Confbridge.where("confbridges.cid = ?",circle.circle_number)
  .joins("LEFT JOIN confbridge_participants 
         ON confbridge_participants.confbridge_id = confbridges.id")
  .select(...your select statement)

【讨论】:

  • 绝对有效。我个人希望会有类似.joins(:left, [:my, :associations]) 的语法
猜你喜欢
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 2015-09-30
  • 2016-05-12
  • 2012-03-25
  • 2013-01-30
  • 1970-01-01
  • 2021-05-02
相关资源
最近更新 更多