pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Oliveiros C, <oliveiros.cristina@marktest.pt>
To: Gary Stainburn <gary.stainburn@ringways.co.uk>
To: pgsql-sql@postgresql.org
Subject: Re: simple (?) join
Date: Mon, 28 Sep 2009 12:14:03 +0100
Message-ID: <9964F6F697654AF4ADAE7DC75B496D05@marktestcr.marktest.pt> (raw)
References: <200909241616.36933.gary.stainburn@ringways.co.uk>
	<20090926205349.5fa284f1@dwnoon.ntlworld.com>
	<4ABE7669.50001@emproshunts.com>
	<200909281202.20768.gary.stainburn@ringways.co.uk>

Hello, Gary.

thank you for your e-mail

This is a slightly modified version of the query I sent you on first place 
(have you tried it out?).

It will return (I hope :) the full orders record plus the maximum 
ol_timestamp and respective o_user.



HTH
Best,
Oliveiros

SELECT subquery.*, orders_log.ol_user
FROM orders_log main
JOIN
(
SELECT orders.o_id, /* The remaining fields of orders go here */, 
MAX(orders_log.ol_timestamp) as latest
FROM orders
NATURAL JOIN orders_log
GROUP BY orders.o_id, /* the remaining fields of orders go here */
) subquery
ON main.ol_timestamp = subquery.latest
AND main.o_id = subquery.o_id


----- Original Message ----- 
From: "Gary Stainburn" <gary.stainburn@ringways.co.uk>
To: <pgsql-sql@postgresql.org>
Sent: Monday, September 28, 2009 12:02 PM
Subject: Re: [SQL] simple (?) join


On Saturday 26 September 2009 21:15:37 justin wrote:
>  David W Noon wrote:
> On Sat, 26 Sep 2009 14:54:24 -0400, justin wrote about Re: [SQL] simple
> (?) join:
>
> [snip]
>
> Quoting Gary
> "How can I select all from orders and the last (latest) entry from the
> orders_log?"
>
>
> In that case, a simple Cartesian product will do:
>
> SELECT o.*, maxi.ts
> FROM orders AS o,
> (SELECT MAX(ol_timestamp) AS ts FROM orders_log) AS maxi;
>
> Since the cardinality of the subquery "maxi" is 1, it will give a result
> set with cardinality of the complete orders table.
>
> I don't understand why anybody would want to do that. [De gustibus ... ]
>
>
>  Guessing here
>
>  Answer to return the last time someone either viewed or edited the order.
>
>  This is a very common audit requirement to track who what, when and why
> something happened.

For some reason the reply I sent on Friday didn't get through.
What I need is all of the order record and all of the latest log entry
returning as a join. Specifically I want for each order the most recent log
entry timestamp and it's associated user - i.e. who made the the last log
entry and when.

I suppose I'm asking how I would do the sub-query to pull the most recent 
log
entry per order.


-- 
Gary Stainburn

Gary's Haircut 700
Please visit http://www.justgiving.com/Gary-Stainburn/ to help me
raise money for Cancer Research - in return I'll have my head shaved


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




view thread (25+ messages)  latest in thread

Message-ID: <9964F6F697654AF4ADAE7DC75B496D05@marktestcr.marktest.pt>
Permalink:  ../9964F6F697654AF4ADAE7DC75B496D05@marktestcr.marktest.pt/
Also on:    postgresql.org/message-id/9964F6F697654AF4ADAE7DC75B496D05@marktestcr.marktest.pt

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: oliveiros.cristina@marktest.pt, gary.stainburn@ringways.co.uk
  Subject: Re: simple (?) join
  In-Reply-To: <9964F6F697654AF4ADAE7DC75B496D05@marktestcr.marktest.pt>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox