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