Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Data Bases > Pgsql Sql > Re: distinct / ...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 3 of 3 Topic 3553 of 3631
Post > Topic >>

Re: distinct / group by assistance.

by gavinb@[EMAIL PROTECTED] ("Gavin 'Beau' Baumanis") Jun 29, 2008 at 03:12 AM

Hi Tom I am a nut.

please find below my correct requirements.

select
    a.foo,
    b.bar,
    c.something
from
	table1 a,
inner join
	table2 b on b.id =a.id
left outer join
	table3 on c.id = a.id

If there a multiple rows of the same id in table2,(one (a) to many (b)  
relation****p)
  I get all (multiple) rows - as you would expect - of course.

What I need however, is only one row returned per instance of a.id  
that is returned by the above query - the one with the greatest  
b.primaryKey would be ok.

I thought of using group by - but there are no calculated fields...  
and the real query contains 32 fields, which according to the errors I  
ran into while trying to get this working, would all need to be  
included in the group by clause.

So my understanding of group by is obviously a little dodgy - and  
obviously not quite what I was expecting.
I tried using a sub query and select distinct a.id..... but that  
didn't exactly help either.

I have deliberately included in my example the fact there is an outer  
join too - I am not sue if that matters or not... but just in case  
thought it prudent to include it here.
On 29/06/2008, at 1:43 AM, Tom Lane wrote:

> "Gavin 'Beau' Baumanis" <gavinb@[EMAIL PROTECTED]
> writes:
>> ... If there a multiple rows of the same id in table1, I get all
>> (multiple) rows - as you would expect - of course.
>
>> What I need however, is only one row returned per instance a.id that
>> is returned by the above query.
>
> You need GROUP BY a.id.
>
>> I thought of using group by - but there are no calculated fields...
>> and the real query contains 32 fields, which according to the  
>> errors I
>> ran into while trying to get this working, would all need to be
>> included in the group by clause.
>
> No, you wouldn't want to do that, because then you'd be back to  
> multiple
> rows per a.id value.
>
> The problem here is that for any one a.id value there could be  
> multiple
> values of the other variables (coming from different rows) and so the
> query results are not well defined if you just add "GROUP BY a.id".
> What you need to do is decide which of those values you want and use
> an aggregate function to get it.  So your query might end up looking
> like
> 	select a.id, min(a.foo), avg(b.bar), ... from ... group by a.id;
>
> 			regards, tom lane

Please contact me if you should have any questions.

Gavin 'Beau' Baumanis
Senior Application Developer
PalCare Pty. Ltd.

E: beau@[EMAIL PROTECTED]
 +61 -3 9381 4567
M: +61 -4 38 545 586
W: http://www.palcare.com.au

-- 
Sent via pgsql-sql mailing list (pgsql-sql@[EMAIL PROTECTED]
)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql
 




 3 Posts in Topic:
distinct / group by assistance.
gavinb@[EMAIL PROTECTED]   2008-06-29 00:32:40 
Re: distinct / group by assistance.
tgl@[EMAIL PROTECTED] (T  2008-06-28 11:43:49 
Re: distinct / group by assistance.
gavinb@[EMAIL PROTECTED]   2008-06-29 03:12:05 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Thu Aug 21 22:57:45 CDT 2008.