Rails 3 - проблема с SQL-запросом - PullRequest
0 голосов
/ 21 сентября 2011

У меня следующий SQL-запрос в синтаксисе Rails 3:

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

И я пытаюсь получить значение 2 - мне нужно получить количество уникальных photo_id данных.Но если я воспользуюсь SQL-запросом выше, то результат будет ** 21022111 ** - я не понимаю, что означает это число ... Я бы предположил, что результат должен быть 2 , но яне понимаю, почему бы и нет ...

Если бы кто-нибудь мог помочь мне с этой проблемой, я был бы очень рад ... Большое спасибо

1 Ответ

2 голосов
/ 21 сентября 2011

Active Record возвращает пары photo_id / count, то есть photo_id 210 count 2, photo_id 211 count 1.

Если вы хотите подсчитать количество отдельных фотографий для данного использования, попробуйте:

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