[PostgreSQL] SELECT * GROUP BY
Jacek Dębowczyk - 16-08-2006 01:27
[PostgreSQL] SELECT * GROUP BY
Jestem w trakcie tworzenia z założenia elastycznego systemu, do dynamicznej generacji zapytań SQL na podstawie parametrów obiektu (w PHP). Przy budowie prostych zapytań nie było problemu, trudności zaczęły się przy zapytaniach grupujących, typu:
SELECT * FROM tabela GROUP BY pole;
Cały problem polega na tym, że w momencie budowania zapytania nie znam (bądź nie chcę znać) nazw wszystkich pól, jedynie interesuje mnie to jedno, według którego mam grupować. Z tego powodu nie mogę ani wyszczególnić wszystkich pól po SELECT (poddając je funkcji agregującej), ani też pogrupować po ich nazwach. Przy zapytaniu jak powyżej otrzymuję komunikat:
ERROR: column "tabela.pierwsza" must appear in the GROUP BY clause or be used in an aggregate function
Oczywiście mam świadomość, że ograniczenie to zostało wprowadzone z jasno określonych powodów, jednakże mój system ma kłaść nacisk naelastyczność. Zakładam, że w całej grupie rekordów dla danej wartości kolumnypole, wartość _interesujących mnie kolumn_ jest identyczna, więc chcęotrzymać dowolną z krotek w grupie. Dokładnie w taki sposób zachowuje się MySQL.
Moje pytanie brzmi - czy takie zachowanie da się osiągnąć w Postgresie?
-- Pozdrawiam, Jacek.
I will not buy this record - it is scratched.
hubert depesz lubaczewski - 16-08-2006 01:27
On 2006-08-14, Jacek Dębowczyk <jumbo-NoSp@m-At-z.pl> wrote: > Moje pytanie brzmi - czy takie zachowanie da się osiągnąć w Postgresie?
odpowiedź: tak. da się.
depesz
p.s. jeśli dodatkowo chciałbyś wiedzieć jak - klauzula "distinct on"
-- http://www.depesz.com/index.php/2006...udzi-do-pracy/
Jacek Dębowczyk - 16-08-2006 01:27
hubert depesz lubaczewski <depesz@depesz.com> napisał(a): > On 2006-08-14, Jacek Dębowczyk <jumbo-NoSp@m-At-z.pl> wrote: >> Moje pytanie brzmi - czy takie zachowanie da się osiągnąć w Postgresie? > > odpowiedź: tak. da się. > > depesz > > p.s. jeśli dodatkowo chciałbyś wiedzieć jak - klauzula "distinct on"
Dokładnie tego szukałem. Wielkie dzięki za szybką odpowiedź.
-- Pozdrawiam, Jacek.
I will not buy this record - it is scratched.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql - int/int
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
=?ISO-8859-2?Q?[psql]_Polskie_t=B3umaczenie_?= =?ISO-8859-2?Q?licencji_BSD_dla_PostgreSQL=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.pllisinski.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|