Re: PostgreSQL Advocacy, Thoughts and Comments

From: "Nigel J(dot) Andrews" <nandrews(at)investsystems(dot)co(dot)uk>
To: Oliver Elphick <olly(at)lfix(dot)co(dot)uk>
Cc: cnliou(at)so-net(dot)net(dot)tw, PostgreSQL general list <pgsql-general(at)postgresql(dot)org>
Subject: Re: PostgreSQL Advocacy, Thoughts and Comments
Date: 2003-11-29 14:04:06
Message-ID: Pine.LNX.4.21.0311291358010.4317-100000@ponder.fairway2k.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Sat, 29 Nov 2003, Oliver Elphick wrote:

> On Sat, 2003-11-29 at 04:37, cnliou wrote:
> > "Jason Tesser" <JTesser(at)nbbc(dot)edu>
> >
> > > MySQL cannot even handle sub-queries yet.
> >
> > Ohh! Really?
> > Allow me to pay my highest respect to the genius mySQL
> > programmers!
> > I completely have no clue on how to construct any single
> > tiny database on a DBMS having no sub-query capability.
> >
> > Being too dumb, I solicit mySQL programmers' help by showing
> > me employee FOO's birthday and his/her latest job title
> > effective on or before 2003-1-1 from the following tables:
> >
> > CREATE TABLE t1 (employee TEXT,BirthDay DATE);
> > CREATE TABLE t2 (employee TEXT,EffectiveDate DATE,JobTitle
> > TEXT);
> >
> > And make the result like this:
> >
> > FOO 1980-1-1 programmer
> >
> > Please do not give me the answer that you will merge these
> > two tables to form one like this:
> >
> > CREATE TABLE t1 (employee TEXT,BirthDay DATE,EffectiveDate
> > DATE,JobTitle TEXT);
>
> I have great trouble following your meaning, but I think you are talking
> about joining two tables in a query:
>
> SELECT t1.employee, t1.birthday, t2.jobtitle
> FROM t1, t2
> WHERE t1.employee = t2.employee;
>
> That is not the same as using a sub-query:
>
> SELECT employee
> FROM t1
> WHERE birthday > (
> SELECT MIN(effectivedate)
> FROM t2
> );
>
> (select employees who were born after the longest-serving employee
> started work.)
>

I think he means for the employee FOO show only the latest job title. Or in
other words:

SELECT t1.employee, t1.birthday, t2.jobtitle
FROM t1, t2
WHERE
t1.employee = t2.employee
AND
t1.employee = 'FOO'
AND
t2.effectivedate > CAST('2003-1-1' TO DATE)
ORDER BY t2.effectivedate DESC
LIMIT 1

which of course uses a PostgreSQL customisation.

I've got a feeling it's possible doing self joins and the like but I'll leave
it at that I think.

--
Nigel

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Andrew Sullivan 2003-11-29 14:06:58 Re: Postgresql on file system EXT2 or EXT3
Previous Message Randal L. Schwartz 2003-11-29 13:58:20 Re: Humor me: Postgresql vs. MySql (esp. licensing)