jeudi 19 mars 2015

JOIN with COALESCE and ORDER BY in Rails

I just ran into an issue with Rails where I couldn't properly use JOIN and multiple ORDER BYs (with one of them being a COALESCE function) in the same query. Is this something that is illegal in SQL (doubtful) or is it just an issue with Rails' implementation? Also, how can I get around it?



# Works!
Post.joins(:author).order("COALESCE(title, '---')")
# => SELECT "posts".* FROM "posts" INNER JOIN "authors" ON "posts"."author_id" = "authors"."id" ORDER BY COALESCE(title DESC, '--')

# Fails - syntax error in SQL
Post.joins(:author).order("COALESCE(title, '---')").last #last should automatically apply an ORDER BY id DESC;
# => SELECT "posts".* FROM "posts" INNER JOIN "authors" ON "posts"."author_id" = "authors"."id" ORDER BY COALESCE(title DESC, '--') ASC LIMIT 1

Aucun commentaire:

Enregistrer un commentaire