Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nakaz stosowania GROUP BY dla każdej kolumny
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
pamil
Witam!
Na localhoście zapytania do PostgreSQL nie zgłaszają żadnych błędów (PostgreSQL 9.1.4).
Na serwerze natomiast (PostgreSQL 9.0.7) zgłasza mi taki błąd:
Kod
n exception has been thrown during the rendering of a template ("SQLSTATE[42803]: Grouping error: 7 BŁĄD: kolumna "c0_.name" musi występować w klauzuli GROUP BY lub być użyta w funkcji agregującej
LINE 1: SELECT c0_.id AS id0, c0_.name AS name1, COUNT(i1_.id) AS sc...
^"

Wie ktoś może od czego to zależy? Wersja postgresa? Konfiguracja?
Generalnie, postgres chce abym dodał klauzulę GROUP BY do każdej kolumny c0.*.
YaQzi
Geralnie skoro robisz COUNT() to musisz bazie powiedzieć w jaki sposób ma postąpić z innymi - powielonymi lub nie kolumnami w selekcie. Czyli max(), min() czy też GROUP BY więc słusznie Ci tu postgres wymusza dorzucenie do grupa pozostałych kolumn. Skopiuj sobie dane z serwera do lokala i wtedy sprawdź czy nic postgres nie krzyczy. Najstarszego postgresa pamiętam jakoś 8.2 i tam Cię na pewno bez group by nie puszczał.
vermis
Zgodnie ze standardem powinieneś grupować po kolumnach dla których używasz funkcji agregujących. W tym wypadku pojawienie się błedu jest dla mnie poprawnym działaniem, raczej zastanawiałbym się dlaczego na innej wersji się nie pojawił niż odwrotnie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.