@IvanN777

Postgreas unique and order by конфликтуют, что не так?

Выражение вида
.joins(:user => :profile).order_site_rating
дает дубликаты, как и почему пока не разобрался, если подскажите тоже буду рад.

Проблема в следующем
PG конфликтует если мы просто добавим distinct
joins(:user => :profile).order_site_rating.distinct


Просит добавить выражение от туда в select и все бы ничего если бы
SELECT DISTINCT(users.id), users.*, profiles.first_name FROM users LEFT JOIN profiles ON users.id = profiles.user_id ORDER BY profiles.first_name


Но к сожалению выборка очень сложная.
order('case when profiles.avatar is null then -1 else 1 end desc')


Как мне такое добавить в select или как поправить связи, чтобы не было дубликатов при выборке?
  • Вопрос задан
  • 873 просмотра
Пригласить эксперта
Ответы на вопрос 1
@IvanN777 Автор вопроса
ОШИБКА: в конструкции SELECT DISTINCT выражения ORDER BY должны быть в списке выборки
LINE 1: ...("anketa_owners"."town_id" IS NOT NULL) ORDER BY case when ...
^
: SELECT DISTINCT "anketa_owners".* FROM "anketa_owners" INNER JOIN "users" ON "users"."id" = "anketa_owners"."user_id" INNER JOIN "profiles" ON "profiles"."user_id" = "users"."id" WHERE ("anketa_owners"."town_id" IS NOT NULL) ORDER BY case when profiles.avatar is null then -1 else 1 end desc, profiles.rating DESC LIMIT 10 OFFSET 0
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы