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 ** - 我不明白,这个数字是什么意思...我会假设输出应该是,但我不明白了,为什么不......
如果有人可以帮助我解决这个问题,我会很高兴......谢谢你这么多
谢谢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
也许我误解你的模型。是模型或照片表上的user_id?如果它在照片表上,那么答案中的where子句是错误的。 – Steve
如果user_id键在照片表上,那么你需要这样做:Model.select(:photo_id).joins(:photo).where('photos.user_id =?',user).count( :distinct => true) – Steve