Thread: Division

Division

From
Bernie Huang
Date:
Hi,

I tried the write up the following SQL statement:

result1 from sql1 = (1,2,3,4,5)
result2 from sql2 = (4,5)
result3 = result1/result2 (or is it result2/result1) = (1,2,3)

What do I have to do to get the (1,2,3) result?  I tried "query EXCEPT
query", but it seems like EXCEPT needs both tables in queries to be of
the same number of columns and column types.  And (any, all, exist)
doesn't seem to be a right solution.

Thanks for help.


- Bernie

Attachment

Re: Division

From
Jie Liang
Date:
Hi, there,

I don't quit sure what you really want to solve, however,
if you use EXCEPT results1 and result2 should be same type rather than
tables, i.e.
select a,b from tab1
except
select c,d from tab2;

a,c are same type
b,d are same type.

notes, EXCEPT to big table is not efficient, so does IN clause.

Bernie Huang wrote:

> Hi,
>
> I tried the write up the following SQL statement:
>
> result1 from sql1 = (1,2,3,4,5)
> result2 from sql2 = (4,5)
> result3 = result1/result2 (or is it result2/result1) = (1,2,3)
>
> What do I have to do to get the (1,2,3) result?  I tried "query EXCEPT
> query", but it seems like EXCEPT needs both tables in queries to be of
> the same number of columns and column types.  And (any, all, exist)
> doesn't seem to be a right solution.
>
> Thanks for help.
>
> - Bernie

--
Jie LIANG

Internet Products Inc.

10350 Science Center Drive
Suite 100, San Diego, CA 92121
Office:(858)320-4873

jliang@ipinc.com
www.ipinc.com





ERROR: replace_vars_with_subplan_refs (!?)

From
Louis-David Mitterrand
Date:
How should I interpret that error?

auction=# SELECT (select max(b.price) from bid b where b.auction_id = a.id and b.person_id = buyer.id) as
last_lot,auction_status(a.id)> 0 AS current, a.lot, a.person_id, next_price(a.id), seller.mail AS seller_mail,
buyer.mailAS buyer_mail, seller.locale AS seller_locale, buyer.login AS buyer_login, num_bid(a.id), seller.login AS
seller_login,t.name AS auction_type FROM auction* a, person seller, person buyer, auction_type t WHERE a.id = 84 AND
seller.id= a.person_id AND COALESCE(a.type,1) = t.id AND buyer.id = 2;
 
ERROR:  replace_vars_with_subplan_refs: variable not in subplan target list

Thanks,

-- 
Louis-David Mitterrand - ldm@apartia.org - http://www.apartia.org
Marijuana is nature's way of saying, "Hi!".


Re: ERROR: replace_vars_with_subplan_refs (!?)

From
Tom Lane
Date:
Louis-David Mitterrand <cunctator@apartia.ch> writes:
> How should I interpret that error?
> ERROR:  replace_vars_with_subplan_refs: variable not in subplan target list

Looks like a bug to me.  I think this may already be fixed in current
sources, but not sure.  Could I trouble you for the relevant table
declarations, so I can try the example without a lot of guessing?
        regards, tom lane


Re: ERROR: replace_vars_with_subplan_refs (!?)

From
Tom Lane
Date:
Louis-David Mitterrand <ldm@apartia.ch> writes:
> On Wed, Sep 20, 2000 at 10:43:59AM -0400, Tom Lane wrote:
>> Louis-David Mitterrand <cunctator@apartia.ch> writes:
>>>> How should I interpret that error?
>>>> ERROR:  replace_vars_with_subplan_refs: variable not in subplan target list
>> 
>> Looks like a bug to me.  I think this may already be fixed in current
>> sources, but not sure.  Could I trouble you for the relevant table
>> declarations, so I can try the example without a lot of guessing?

> Please find attached the full dump.

OK, this is indeed fixed in current sources.  I think you are running
into the same problem you reported in June, namely that subselects
appearing in the targetlist of an Append plan are misprocessed in 7.0.*.
Append is mainly used for handling inherited queries, so it's the
combination of inheritance and subselect in targetlist that's needed
to trigger the bug.

This probably also explains the other report you filed this morning;
once the subselect is messed up, all sorts of things start to go wrong
:-( 

I think you could back-patch the fix into 7.0.* just by dropping rev
1.64 of setrefs.c into the 7.0 source tree --- see
http://www.postgresql.org/cgi/cvswebtest.cgi/pgsql/src/backend/optimizer/plan/setrefs.c
for that version.
        regards, tom lane