Thread: max value from join

max value from join

From
hook
Date:
I have a court program with related tables
citation citkey   varchar(16) NOT NULL   PRIMARY KEY,    ....
cdefendant    citkey   varchar(16) NOT NULL   PRIMARY KEY references citation,    ....
ccourt citkey   varchar(16) NOT NULL   PRIMARY KEY references citation,    ....
disposition citkey    varchar(16) NOT NULL  PRIMARY KEY references citation,    ....
ccontinue citkey    varchar(16) NOT NULL references citation,    ....     
warrant citkey    varchar(16) NOT NULL references citation,   ....     


I am trying to extract data related to the last conttinue date usingselect    c.citkey, /* c.cdate,    c.badge,
c.vioDesc,   b.lname,   b.fname,    b.mi,      b.race,   b.dob,   b.sex,   d.docket,  d.plea,     d.fine,    d.costs,
d.ddate,d.abdocket, d.bond,   p.disDate, p.disDesc,  p.disCode, p.amount,   */   t.contDate,   t.abcontinue,
w.bndType,w.bndAmt    from citation c, cdefendant b, ccourt d, ccontinue t,         disposition p, warrant w    where
c.citkey  = b.citkey  and          b.citkey   = d.citkey  and          d.citkey   = t.citkey  and          t.citkey   =
p.citkey and         p.citkey   = w.citkey     group by          c.citkey, c.cdate, c.badge, c.vioDesc,
b.lname, b.fname, b.mi, b.race, b.dob, b.sex,         d.docket, d.plea,  d.fine,  d.costs, d.ddate, d.abdocket, d.bond,
       p.disDate, p.disDesc,  p.disCode, p.amount,         t.abcontinue,  t.contDate,         w.bndType, w.bndAmt
having max(t.contDate) = t.contDate   order by c.citkey
 


I cannot seem to get unique rows with only the max contDate??

i.e.  citkey   |  contdate   | abcontinue | bndtype | bndamt  
------------+-------------+------------+---------+---------991164031  | 06/07/2000  | 6          | Bond    |
0.00991164031 | 07/19/2000  | 6          | Bond    |    0.00
 



thanks




Re: max value from join

From
Richard Poole
Date:
On Mon, Jun 14, 2004 at 11:02:06AM -0500, hook wrote:
> I have a court program with related tables

<snip>

> I am trying to extract data related to the last conttinue date using
> select 
>    c.citkey, /* c.cdate, 
>    c.badge,   c.vioDesc, 
>    b.lname,   b.fname,    b.mi,      b.race,   b.dob,   b.sex,
>    d.docket,  d.plea,     d.fine,    d.costs,  d.ddate, d.abdocket, d.bond,
>    p.disDate, p.disDesc,  p.disCode, p.amount,
>    */
>    t.contDate,
>    t.abcontinue,
>    w.bndType, w.bndAmt 
>    from citation c, cdefendant b, ccourt d, ccontinue t, 
>         disposition p, warrant w 
>    where c.citkey   = b.citkey  and 
>          b.citkey   = d.citkey  and 
>          d.citkey   = t.citkey  and 
>          t.citkey   = p.citkey  and
>          p.citkey   = w.citkey  
>    group by 
>          c.citkey, c.cdate, c.badge, c.vioDesc, 
>          b.lname,  b.fname, b.mi, b.race, b.dob, b.sex,
>          d.docket, d.plea,  d.fine,  d.costs, d.ddate, d.abdocket, d.bond,
>          p.disDate, p.disDesc,  p.disCode, p.amount,
>          t.abcontinue,  t.contDate,
>          w.bndType, w.bndAmt
>    having  max(t.contDate) = t.contDate
>    order by c.citkey
> 
> 
> I cannot seem to get unique rows with only the max contDate??

A subselect may be useful to you:

SELECT c.citkey, t.contDate  -- other fields...
FROM citation c, ccontinue t -- other tables...
WHERE c.citkey = t.citkey    -- other join clauses...
AND t.contDate = (SELECT max(contDate) FROM ccontinue
)
-- no need for GROUP BY / HAVING
ORDER BY c.citkey


Richard