tricky GROUP BY / JOIN question

From: T E Schmitz <mailreg(at)numerixtechnology(dot)de>
To: pgsql-sql <pgsql-sql(at)postgresql(dot)org>
Subject: tricky GROUP BY / JOIN question
Date: 2004-11-07 10:31:08
Message-ID: 418DF96C.4090501@numerixtechnology.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hello,
I'm sorry I couldn't think up a more precise subject line.

I would like to know whether the following can be implemented in SQL:
The example below joins 4 tables ITEM, BRAND, MODEL and CONDITION. In
human understandable terms: a [secondhand] Item is of a particular Model
and Brand. The Items retail at different prices depending on their
Condition.

Required result set:

Brand | Model | Cond | Cond | Price | Price
| | min | max | min | max
-------------------------------------------
Canon | A1 | Exc | Mint | 139 | 155
Canon | F1N | Exc++| Mint-| 329 | 379
Canon | 24mm | Exc--| Mint+| 99 | 179
Nikon | 50mm | Exc--| Mint+| 109 | 119

This is *almost* what I need:

SELECT
BRAND.BRAND_NAME,
MODEL.MODEL_NAME,
min (ITEM.PRICE),max (ITEM.PRICE)
*min (CONDITION.POSITION),max (CONDITION.POSITION)*
FROM ITEM
left outer join MODEL on MODEL_PK =ITEM.MODEL_FK
left outer join BRAND on BRAND.BRAND_PK =MODEL.BRAND_FK
left outer join CONDITION on CONDITION.CONDITION_PK = ITEM.CONDITION_FK
group by BRAND.BRAND_NAME,MODEL.MODEL_NAME

Problem:
Table CONDITION has the columns
- NAME varchar(5)
- POSITION int2

In the result I don't want min/max(POSITION) but CONDITION.NAME of min
and max(POSITION) for each MODEL.

Is this possible at all?
--

Regards/Gruß,

Tarlika Elisabeth Schmitz

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2004-11-07 18:31:56 Re: tricky GROUP BY / JOIN question
Previous Message vasundhar 2004-11-07 06:45:36 Hi