2011-09-21 91 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