From: | Michael Gould <mgould(at)isstrucksoftware(dot)net> |
---|---|
To: | Alexander Reichstadt <lxr(at)mac(dot)com>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: GROUP BY or alternative means to group |
Date: | 2012-03-12 20:18:05 |
Message-ID: | r02pdd0qpqha0ar3wq6kqxj1.1331583485074@email.android.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
You need to include all columns that are not aggregrative columns in the group by. Even though that is the standard it is a pain to list all columns even if you don't need them
Best Regards
Michael Gould
Sent from Samsung mobile
Alexander Reichstadt <lxr(at)mac(dot)com> wrote:
>Hi,
>
>the following statement worked on mysql but gives me an error on postgres:
>
>column "addresses.address1" must appear in the GROUP BY clause or be used in an aggregate function
>
>I guess I am doing something wrong. I read the web answers, but none of them seem to meet my needs:
>
>SELECT companies.id,companies.name,companies.organizationkind,addresses.address1,addresses.address2,addresses.city,addresses.zip FROM companies JOIN addresses_reference ON companies.id=addresses_reference.refid_companies LEFT JOIN addresses ON addresses_reference.refid_addresses=addresses.id GROUP BY companies.id;
>
>
>What I did now was create a view based on above statement but without grouping. This returns a list with non-distinct values for all companies that have more than one address, which is correct. But in some cases I only need one address and the problem is that I cannot use distinct.
>
>I wanted to have some way to display a companies list that only gives me the first stored addresses related, and disregard any further addresses.
>
>Is there any way to do this?
>
>Thanks
>Alex
From | Date | Subject | |
---|---|---|---|
Next Message | Tim Uckun | 2012-03-12 20:20:31 | Re: full text search and ILIKE type clauses. |
Previous Message | Alexander Reichstadt | 2012-03-12 19:35:30 | GROUP BY or alternative means to group |