2011-09-21 92 views
0

我有以下的Rails 3的语法sql查询问题:Rails 3中 - 与SQL查询

variab = Model.joins(:photo).where('photos.user_id = ?', user).group('model.photo_id').count 

Models表我有这些数据:

+----+----------+----------+---------------------+----------+ 
| 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 | 
+----+----------+----------+---------------------+----------+ 

我试图让值 - 我需要计算唯一的photo_id数据。 但是,如果我将使用上面的SQL查询,所以输出是** 21022111 ** - 我不明白,这个数字是什么意思...我会假设输出应该是,但我不明白了,为什么不......

如果有人可以帮助我解决这个问题,我会很高兴......谢谢你这么多

回答

2

活动记录被返回photo_id /数对,即photo_id 210计数2,photo_id 211 count 1.

如果您想计算给定用途的不同照片的数量,请尝试:

Model.select(:photo_id).where(:user_id => user.id).count(:distinct => true) 
+0

谢谢Steve的回复。这个例子生成了这个查询:'SELECT COUNT(DISTINCT'model'.'id')FROM' model' LEFT OUTER JOIN'photos' ON'photos'.'''''''''''photo_id' WHERE(user_id = 2)' - 这给我在我的脚本结果** 0 **,但在终端在MySQL的数字** 3 **。但正确的输出应该是2. – user1946705

+0

也许我误解你的模型。是模型或照片表上的user_id?如果它在照片表上,那么答案中的where子句是错误的。 – Steve

+1

如果user_id键在照片表上,那么你需要这样做:Model.select(:photo_id).joins(:photo).where('photos.user_id =?',user).count( :distinct => true) – Steve