Re: left outer join only select newest record

From: "Oliveiros d'Azevedo Cristina" <oliveiros(dot)cristina(at)marktest(dot)pt>
To: "Oliveiros d'Azevedo Cristina" <oliveiros(dot)cristina(at)marktest(dot)pt>, "Gary Stainburn" <gary(dot)stainburn(at)ringways(dot)co(dot)uk>, <pgsql-sql(at)postgresql(dot)org>
Subject: Re: left outer join only select newest record
Date: 2012-05-23 10:41:04
Message-ID: 5C0C3B737C8D42D6A44F4946D76F4E20@marktestcr.marktest.pt
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Sorry, Gary,

I made a mistake on the last column.

It should be

SELECT subq.s_stock_no,subq.s_regno,subq.s_vin,subq.s_created,subq.m,
sec.ud_handover_date
FROM
(select s_stock_no, s_regno, s_vin, s_created, MAX(ud_id) as m
from stock s
left outer join used_diary u
on s.s_regno = u.ud_pex_registration
where s_stock_no = 'UL15470';
GROUP s_stock_no,s_regno,s_vin,s_created
) subq
JOIN
used_diary sec
ON subq.m = sec.ud_id

Best,
Oliver
----- Original Message -----
From: "Oliveiros d'Azevedo Cristina" <oliveiros(dot)cristina(at)marktest(dot)pt>
To: "Gary Stainburn" <gary(dot)stainburn(at)ringways(dot)co(dot)uk>;
<pgsql-sql(at)postgresql(dot)org>
Sent: Wednesday, May 23, 2012 11:29 AM
Subject: Re: [SQL] left outer join only select newest record

> Hello again, Gary,
>
> I don't know if this query works OK, i havent tried it.
>
> But, If I understood correctly this can be one way to do what you want.
> Could you please tell me if it worked and if it didn't why, so we can
> tweak it.
>
> Best,
> Oliver
>
> SELECT subq.s_stock_no,subq.s_regno,subq.s_vin,subq.s_created,subq.m,
> sec.s_creacted
> FROM
> (select s_stock_no, s_regno, s_vin, s_created, MAX(ud_id) as m
> from stock s
> left outer join used_diary u
> on s.s_regno = u.ud_pex_registration
> where s_stock_no = 'UL15470';
> GROUP s_stock_no,s_regno,s_vin,s_created
> ) subq
> JOIN
> used_diary sec
> ON subq.m = sec.ud_id
>
> ----- Original Message -----
> From: "Gary Stainburn" <gary(dot)stainburn(at)ringways(dot)co(dot)uk>
> To: <pgsql-sql(at)postgresql(dot)org>
> Sent: Wednesday, May 23, 2012 10:47 AM
> Subject: Re: [SQL] left outer join only select newest record
>
>
>> Appologies for not making it clearer. stock_details is simply a view of
>> table
>> stock, pulling in some lookup values. used_diary is the name of the
>> table
>> containing the tax requests. It's called the used_diary because it was
>> the
>> diary for taxing used vehicles.
>>
>> Here is a select to show the problem. There is one stock record and two
>> tax
>> records. What I'm looking for is how I can return only the second tax
>> record,
>> the one with the highest ud_id
>>
>> select s_stock_no, s_regno, s_vin, s_created, ud_id, ud_handover_date
>> from
>> stock s left outer join used_diary u on s.s_regno = u.ud_pex_registration
>> where s_stock_no = 'UL15470';
>>
>> s_stock_no | s_regno | s_vin | s_created |
>> ud_id | ud_handover_date
>> ------------+---------+-------------------+----------------------------+-------+------------------
>> UL15470 | YG12*** | KNADN312LC6****** | 2012-05-21 09:15:31.569471 |
>> 41892 | 2012-04-06
>> UL15470 | YG12*** | KNADN312LC6****** | 2012-05-21 09:15:31.569471 |
>> 42363 | 2012-05-16
>> (2 rows)
>>
>>
>> On Wednesday 23 May 2012 10:37:31 Oliveiros d'Azevedo Cristina wrote:
>>> Gary,
>>>
>>> You describe two tables vehicle stock and tax requests. The former has a
>>> one-to-many relationship wit the second one, right?
>>>
>>> But your query involves stock details and used_diary.
>>>
>>> What is the relationship of these two new tables to the previous ones?
>>>
>>> Could you please kindly supply an example of what you have and of the
>>> desired output? For me it would be easier...
>>>
>>> Best,
>>> Oliver
>>>
>>> ----- Original Message -----
>>> From: "Gary Stainburn" <gary(dot)stainburn(at)ringways(dot)co(dot)uk>
>>> To: <pgsql-sql(at)postgresql(dot)org>
>>> Sent: Wednesday, May 23, 2012 10:27 AM
>>> Subject: [SQL] left outer join only select newest record
>>>
>>> > Hi folks,
>>> >
>>> > I know I've seen posts like this before but Google isn't helping
>>> > today.
>>> >
>>> > I have two tables, vehicle stock and tax requests. Each vehicle can be
>>> > taxed
>>> > more than once, but I only want to pull in the most recent tax
>>> > request -
>>> > the
>>> > one with the highest ud_id.
>>> >
>>> > I have the following, which obviously returning multiple records which
>>> > then
>>> > appears that the same vehicle is in stock multiple times. How can I
>>> > make
>>> > it
>>> > so we only show each vehicle once, showing the most recent tax request
>>> > details.
>>> >
>>> >
>>> > select * from stock_details s
>>> > left outer join used_diary u on s.s_registration = u.ud_registration;
>>> >
>>> >
>>> > --
>>> > Gary Stainburn
>>> > Group I.T. Manager
>>> > Ringways Garages
>>> > http://www.ringways.co.uk
>>> >
>>> > --
>>> > Sent via pgsql-sql mailing list (pgsql-sql(at)postgresql(dot)org)
>>> > To make changes to your subscription:
>>> > http://www.postgresql.org/mailpref/pgsql-sql
>>
>>
>>
>> --
>> Gary Stainburn
>> Group I.T. Manager
>> Ringways Garages
>> http://www.ringways.co.uk
>>
>> --
>> Sent via pgsql-sql mailing list (pgsql-sql(at)postgresql(dot)org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-sql
>
>
> --
> Sent via pgsql-sql mailing list (pgsql-sql(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Lee Hachadoorian 2012-05-23 19:07:33 Re: sub query and AS
Previous Message Gary Stainburn 2012-05-23 10:33:21 Re: left outer join only select newest record