Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询到Rails查询_Sql_Ruby On Rails 4 - Fatal编程技术网

SQL查询到Rails查询

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

我的问题是

我用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中,我有如下内容:

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