PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PG::InvalidColumnReference:BŁĄD:dla SELECT DISTINCT, wyrażenia ORDER BY muszą pojawić się na liście wyboru

Musisz dodać widget_steps.name do listy wybranych kolumn:

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

Nie powinno to zmienić logiki zapytania i będzie działać poprawnie.

W Railsach możesz użyć select metoda ustawienia listy wybranych kolumn:

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

Mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustrukturyzować czat w aplikacji?

  2. żądanie postgresql dotyczące kilku schematów

  3. jak przenieść tabele z publicznych do innych schematów w Postgres

  4. Jak wykorzystać nowe funkcje partycjonowania w PostgreSQL 11?

  5. Uzyskaj ten sam wynik, gdy próbujesz znaleźć inne dane