Re: That killer 3rd join...

From: Oliver Smith <oliver(at)ourshack(dot)com>
To: The Hermit Hacker <scrappy(at)hub(dot)org>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: That killer 3rd join...
Date: 2000-09-07 13:11:38
Message-ID: 20000907141138.A353@kfs.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, Sep 06, 2000 at 10:52:34PM -0300, The Hermit Hacker wrote:
> SELECT
> stone_name, st.stone_uid, stone_modifies, stone_difficulty, stone_cost,
> silver.jtyp_name AS silver_name, (silver.metal_cost + stone_cost) AS Expr1,
> silver.jcombo_stats AS silver_stats,
> elec.jtyp_name AS electrum_name, (elec.metal_cost + stone_cost) AS Expr2,
> elec.jcombo_stats AS electrum_stats,
> gold.jtyp_name AS gold_name, (gold.metal_cost + stone_cost) AS Expr3,
> gold.jcombo_stats AS gold_stats,
> plat.jtyp_name AS plat_name, (plat.metal_cost + stone_cost) AS Expr4,
> plat.jcombo_stats AS plat_stats
> FROM
> stone_types st, silver, elec, gold, plat
> WHERE
> st.stone_uid = silver.stone_uid AND
> st.stone_uid = elec.stone_uid AND
> st.stone_uid = gold.stone_uid AND
> st.stone_uid = plat.stone_uid ;
>
> where 'silver','elec','gold','plat' are each:
>
> CREATE VIEW silver AS
> SELECT
> metal_name, jtyp_name, metal_cost, jc.stone_uid, mt.metal_uid, jc.jcombo_stats
> FROM
> jewellery_types jt, jewellery_combinations jc, metal_types mt
> WHERE
> jt.jtyp_uid = jc.jtyp_uid AND jc.metal_uid = mt.metal_uid AND mt.metal_uid = 1;
>
> I have to be missing something though, since I'm only getting back 23
> results, but they come back quick as anything ...

23 results is correct (or, infact, correct with the data I supplied).

Hmm - Interesting tho. It hadn't occured to me to drop the 'generic'
jcombo_query and replace that with specific views. Infact, what
I'd been doing was using

CREATE VIEW jcombo_query AS
SELECT
metal_name,
jtyp_name,
metal_cost,
jc.stone_uid,
mt.metal_uid,
jc.jcombo_stats
FROM
jewellery_types jt,
jewellery_combinations jc,
metal_types mt
WHERE
jt.jtyp_uid = jc.jtyp_uid AND
jc.metal_uid = mt.metal_uid ;

and then having the following:

CREATE VIEW silver AS
SELECT * FROM jcombo_query WHERE metal_uid = 1 ;

CREATE VIEW elec AS
...

However, when I did that, postgres went away. I'll give your idea a try,
it looks quite promising.

Oliver
--
If at first you don't succeed, skydiving is not for you...

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message The Hermit Hacker 2000-09-07 13:23:57 Re: That killer 3rd join...
Previous Message Mark Kirkwood 2000-09-07 08:25:34 RE:Error building JDBC Driver