PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PG::InvalidColumnReference:ГРЕШКА:за SELECT DISTINCT, изразите ORDER BY трябва да се показват в списъка за избор

Трябва да добавите widget_steps.name към списък с избрани колони:

SELECT  DISTINCT "widgets".*, "widget_steps.name" FROM "widgets" INNER JOIN "widget_steps" ON "widget_steps"."widget_id" = "widgets"."id" INNER JOIN "widget_steps" "active_steps_widgets" ON "active_steps_widgets"."id" = "widgets"."active_widget_step_id" WHERE "widgets"."account_id" = 1 AND "widgets"."completed_at" IS NULL AND (("widgets"."sequential" = 't' AND "widget_steps"."assigned_to" = 5 AND "widget_steps"."id" = "widgets"."active_widget_step_id" AND "widget_steps"."completed_at" IS NULL) OR ("widgets"."sequential" = 'f' AND "widget_steps"."assigned_to" = 5 AND "widget_steps"."completed_at" IS NULL)) ORDER BY sequential DESC, widget_steps.name ASC LIMIT 10 OFFSET 0

Това не трябва да променя логиката на вашата заявка и ще работи добре.

В Rails можете да използвате select метод за задаване на списък с избрани колони:

Widget.select('"widgets".*, "widget_steps.name"')

Надявам се това да помогне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. За предимствата на сортираните пътища

  2. Postgres JSONb към XML с tag_name и tag_value

  3. pg gem '0.14.0' на Mountain Lion се проваля

  4. Какво е еквивалентът на DO блок за Postgres <9.0

  5. Escape SQL LIKE стойност за Postgres с psycopg2