RE: RE: Re(2): optimize sql

From: Henry Lafleur <HLafleur(at)phoenixforge(dot)com>
To: pgsql-sql(at)fc(dot)emc(dot)com(dot)ph, Henry Lafleur <HLafleur(at)phoenixforge(dot)com>, pgsql-sql(at)postgresql(dot)org
Subject: RE: RE: Re(2): optimize sql
Date: 2000-07-28 16:18:08
Message-ID: E332B20358CDD1118D7A00A0C995F75A91460D@XSERVER
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

I'm kind of new to pgsql, but as long as MAX works for boolean fields, they
you can just change the first query below with:

HAVING MAX(active) != 't'

but it seems that pgsql can have user defined aggregates, so you could
define a function that computes the MAX of a boolean and define true to be
the max.

Henry

-----Original Message-----
From: pgsql-sql(at)fc(dot)emc(dot)com(dot)ph [mailto:pgsql-sql(at)fc(dot)emc(dot)com(dot)ph]
Sent: Thursday, July 27, 2000 9:28 PM
To: HLafleur(at)phoenixforge(dot)com; pgsql-sql(at)postgresql(dot)org
Subject: Re: RE: Re(2): [SQL] optimize sql

but active is a boolean field.

HLafleur(at)phoenixforge(dot)com writes:
>If you know that 't' will always be the highest character in the active
>field for all records:
>
>SELECT name FROM office, office_application
>WHERE code = office_code
>GROUP BY name
>HAVING MAX(active) < 't'
>
>Of course, if you have an active that is 'z' for example, then this won't
>work. I think this should work also regardless of max(active) for the
>table:
>
>SELECT name FROM office, office_application
>WHERE code = office_code AND active <= 't'
>GROUP BY name
>HAVING MAX(active) < 't'
>UNION
>SELECT name FROM office, office_application
>WHERE code = office_code AND active >= 't'
>GROUP BY name
>HAVING MIN(active) > 't'
>
>Henry
>
>
>-----Original Message-----
>From: pgsql-sql(at)fc(dot)emc(dot)com(dot)ph [mailto:pgsql-sql(at)fc(dot)emc(dot)com(dot)ph]
>Sent: Wednesday, July 26, 2000 9:40 PM
>To: pgsql-sql(at)postgresql(dot)org; reedstrm(at)rice(dot)edu
>Subject: Re(2): [SQL] optimize sql
>
>
>reedstrm(at)rice(dot)edu writes:
>>How does the output of the above differ from:
>>
>>SELECT name FROM office, office_application
>>WHERE code = office_code
>>AND active != 't';
>>
>>Without knowing the table structures (which tables to active, code,
>>and office_code belong to?) it's hard to suggest much else.
>>
>>Ross
>
>
>The name and code fields belong to office table. While
>office_code and active fields belong to office_application table.
>The name field have duplicates and among the duplicates,
>only one active field is TRUE. I just wanted to get name field
>that has no TRUE active field. Any other idea? Thanks.
>
>sherwin

Browse pgsql-sql by date

  From Date Subject
Next Message Web Manager 2000-07-28 20:54:58 two table comparison: find a mismatch?
Previous Message Tom Lane 2000-07-28 15:13:31 Re: Conditional rule?