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
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) |