Rails 3-sql查询问题
我有以下Rails 3语法的sql查询:Rails 3-sql查询问题,sql,ruby-on-rails-3,join,model,group-by,Sql,Ruby On Rails 3,Join,Model,Group By,我有以下Rails 3语法的sql查询: variab = Model.joins(:photo).where('photos.user_id = ?', user).group('model.photo_id').count 在模型表中,我有以下数据: +----+----------+----------+---------------------+----------+ | id | photo_id | created_at | updated_at
variab = Model.joins(:photo).where('photos.user_id = ?', user).group('model.photo_id').count
在模型
表中,我有以下数据:
+----+----------+----------+---------------------+----------+
| id | photo_id | created_at | updated_at |
+----+----------+----------+---------------------+----------+
| 31 | 210 | 2011-09-16 14:38:22 | 2011-09-16 14:38:22 |
| 32 | 210 | 2011-09-16 14:38:22 | 2011-09-16 14:38:22 |
| 33 | 211 | 2011-09-16 15:03:26 | 2011-09-16 15:03:26 |
+----+----------+----------+---------------------+----------+
我试图得到值2——我需要得到唯一的照片id数据的计数。
但是如果我使用上面的sql查询,那么输出是**21022111**-我不明白,这个数字是什么意思。。。我假设输出应该是2,但我不明白,为什么不
如果有人能帮我解决这个问题,我真的很高兴。。。非常感谢活动记录正在返回照片id/计数对,即照片id 210计数2,照片id 211计数1 如果要计算给定用途的不同照片的数量,请尝试:
Model.select(:photo_id).where(:user_id => user.id).count(:distinct => true)
谢谢史蒂夫的回复。此示例生成此查询:
从照片上的模型`左外连接照片
中选择COUNT(DISTINCT
模型),这在我的脚本中给出结果0,但在mysql的终端中给出数字3。但是正确的输出应该是2。也许我误解了你的模型。用户id是否在模型或照片表上?如果它在照片表上,则答案中的where子句是错误的。如果用户id键在照片表上,则需要执行以下操作:Model.select(:photo_id).joins(:photo.where('photos.user_id=?',user.).count(:distinct=>true)