Ok, that's easy, i see. But now how can i also get who hasn't done the
expense?

person
id        name
1         james
2         michael
3         jack

expense
no        id        exp
1          1        2000
2          2        1000
3          1          500

so that the result should be:

id      name      no        exp
1       james      3         500
2       michael    2       1000
3       jack        null       null




----- Original Message -----
From: <[EMAIL PROTECTED]>
To: "Eris Ristemena" <[EMAIL PROTECTED]>
Cc: <mysql@lists.mysql.com>
Sent: Wednesday, December 21, 2005 11:11 PM
Subject: Re: Filtering join


> I can't take it any longer. Come on list this is an easy one!! We have
> only had this question asked about once every other week this year.  Shame
> on you lurkers who knew the answer but didn't kick in.  8-(
>
> Eris,
> What you are looking for can be called the "group wise maximum" because
> you want the row with the max value for a particular group. In your case
> (using your second example) you want the row with the maximum `no` for
> each `id` value
>
> The FINE MANUAL has three ways to write queries to solve this problem:
>
http://dev.mysql.com/doc/refman/4.1/en/example-maximum-column-group-row.html
>
> Let us know if you have problems translating the documentation to fit your
> needs. (for shame, for shame!)
>
> Merry Christmas!
>
> Shawn Green
> Database Administrator
> Unimin Corporation - Spruce Pine
>
>
>
> "Eris Ristemena" <[EMAIL PROTECTED]> wrote on 12/21/2005 11:01:59 AM:
>
> > Ok, i change the table to make it clear.
> >
> > I have two tables, person and expense
> > person
> > id        name
> > 1         james
> > 2         michael
> >
> > expense
> > no        id        exp
> > 1          1        2000
> > 2          2        1000
> > 3          1          500
> >
> > where expense.no is an autoincrement column.
> >
> > how can i get the last expense of each people in table person? so the
> result
> > should be:
> >
> > id      name      no        exp
> > 1       james      3         500
> > 2       michael    2       1000
> >
> > thanks in advance
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "Peter Brawley" <[EMAIL PROTECTED]>
> > To: "Eris Ristemena" <[EMAIL PROTECTED]>
> > Cc: <mysql@lists.mysql.com>
> > Sent: Wednesday, December 21, 2005 10:43 PM
> > Subject: Re: Filtering join
> >
> >
> > > Eris,
> > >
> > >  >...what i need is a distinct t1.id with maximum t2.no, so that the
> > result
> > >  >should be like this:
> > >  >id name no id cust
> > >  >1 a 2 1 y
> > >  >2 b null null null
> > >  >3 c null null null
> > >
> > > To get the maximum t2.no value for each t1.id value, try ...
> > >
> > >   SELECT
> > >     t1.id,
> > >     t1.name,
> > >     t2.id,
> > >     MAX(t2.no)
> > >   FROM t1 LEFT JOIN t2 USING (id)
> > >   GROUP BY t1.id;
> > >
> > > but because of the MAX() / GROUP BY aggregation, adding t2.cust to the
> > > query will not give you the t2.cust values that go with t2.no values.
> > >
> > > PB
> > >
> > > -----
> > >
> > > Eris Ristemena wrote:
> > >
> > > >hi all,
> > > >
> > > >i have this small problem. I hope someone can help me out here.
> > > >
> > > >i have two table with one-to-many relations,
> > > >t1
> > > >id   name
> > > >1      a
> > > >2      b
> > > >3      c
> > > >
> > > >t2
> > > >no   id   cust
> > > >1      1     x
> > > >2      1     y
> > > >
> > > >using join statement like this:
> > > >select * from t1 left join t2 using (id)
> > > >
> > > >i get this result:
> > > >id    name   no   id   cust
> > > >1        a       1     1     x
> > > >1        a       2     1     y
> > > >2        b      null  null  null
> > > >3        c      null  null  null
> > > >
> > > >but what i need is a distinct t1.id with maximum t2.no, so that the
> > result
> > > >should be like this:
> > > >id    name   no   id   cust
> > > >1        a       2     1     y
> > > >2        b      null  null  null
> > > >3        c      null  null  null
> > > >
> > > >Can someone help me how? group by seem doesn't work.
> > > >
> > > >regards,
> > > >-ers
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > No virus found in this outgoing message.
> > > Checked by AVG Free Edition.
> > > Version: 7.1.371 / Virus Database: 267.14.3/209 - Release Date:
> 12/21/2005
> > >
> > >
> > >
> >
> >
> > --
> > MySQL General Mailing List
> > For list archives: http://lists.mysql.com/mysql
> > To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> >
>


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to