SQL查询到Rails查询
我的问题是 我用sql编写查询,如下所示:SQL查询到Rails查询,sql,ruby-on-rails-4,Sql,Ruby On Rails 4,我的问题是 我用sql编写查询,如下所示: SELECT sum(smsqs.count_sms) as nb_sms_sent, count(smsq_receiveds.id) as nb_sms_received FROM smsqs join smsq_receiveds on smsqs.id = smsq_receiveds.smsq_id where smsq_receiveds.campaign = '436' 它工作得很好 在rails中,我有如下内容: SmsqRecei
SELECT sum(smsqs.count_sms) as nb_sms_sent, count(smsq_receiveds.id) as nb_sms_received
FROM smsqs join smsq_receiveds on smsqs.id = smsq_receiveds.smsq_id
where smsq_receiveds.campaign = '436'
它工作得很好
在rails中,我有如下内容:
SmsqReceived.joins(:smsq).select('sum(smsqs.count_sms) as nb_sms_sent, count(smsq_receiveds.id) as nb_sms_received').where(:smsq_receiveds=> {:campaign => '436'})
但我没有结果
结果是:
SmsqReceived Load (0.2ms) SELECT sum(smsqs.count_sms) as nb_sms_sent, count(smsq_receiveds.id) as nb_sms_received FROM `smsq_receiveds` INNER JOIN `smsqs` ON `smsqs`.`id` = `smsq_receiveds`.`smsq_id` WHERE `smsq_receiveds`.`campaign` = 436
#<ActiveRecord::Relation [#<SmsqReceived id: nil>]>
在脚本sql上,它工作得很好
rails有什么问题?为什么rails的结果为零?rails的性能与预期一样。SmsqReceived关系显示
id:nil
,因为查询没有选择id列
SmsqReceived Load (0.2ms) SELECT sum(smsqs.count_sms) as nb_sms_sent, count(smsq_receiveds.id) as nb_sms_received FROM `smsq_receiveds` INNER JOIN `smsqs` ON `smsqs`.`id` = `smsq_receiveds`.`smsq_id` WHERE `smsq_receiveds`.`campaign` = 436
#<ActiveRecord::Relation [#<SmsqReceived id: nil>]>
如果还需要所有SmsqReceived属性,请将它们包括在选择:
SmsqReceived.joins(:smsq).select('sms_receiveds.*, sum(smsqs.count_sms) as nb_sms_sent, count(smsq_receiveds.id) as nb_sms_received').where(:smsq_receiveds=> {:campaign => '436'})
records = SmsqReceived.joins(:smsq).select('sum(smsqs.count_sms) as nb_sms_sent, count(smsq_receiveds.id) as nb_sms_received').where(:smsq_receiveds=> {:campaign => '436'})
records.first.nb_sms_sent
records.first.nb_sms_received
SmsqReceived.joins(:smsq).select('sms_receiveds.*, sum(smsqs.count_sms) as nb_sms_sent, count(smsq_receiveds.id) as nb_sms_received').where(:smsq_receiveds=> {:campaign => '436'})