Thread

  1. Re: [HACKERS] SELECT BUG

    Jose Soares <jose@sferacarta.com> — 1999-09-07T10:37:17Z

    
    Tom Lane ha scritto:
    
    > =?iso-8859-1?Q?Jos=E9?= Soares <jose@sferacarta.com> writes:
    > > And now the other SELECT bug in the same data:
    > > select master1.*, detail1.*
    > > from master1 m, detail1 d
    > > where trim(m.code)=trim(d.code);
    >
    > This one is definitely pilot error.  Since you've renamed master1 and
    > detail1 in the FROM clause, your use of the original names in the SELECT
    > list is treated as adding more FROM items.  Effectively your query is
    >
    > select m2.*, d2.*
    > from master1 m, detail1 d, master1 m2, detail1 d2
    > where trim(m.code)=trim(d.code);
    >
    > You're getting a four-way join with only one restriction clause...
    >
    > There was a thread just the other day about whether we ought to allow
    > queries like this, because of someone else making exactly the same
    > error.  I believe allowing tables to be referenced without FROM entries
    > is a holdover from the old Postquel language that's not found in SQL92.
    > Maybe we should get rid of it on the grounds that it creates confusion.
    >
    >                         regards, tom lane
    >
    >
    
    PostgreSQL should raise a syntax error like Informix and Oracle do.
    
    > ************
    > INFORMIX:
    >
    > select master1.*, detail1.* from master1 m, detail1 d where mcode=dcode;
    > #              ^
    > #  522: Table (master1) not selected in query.
    > #
    > ------------------------------------------------------------------------
    > ORACLE:
    >
    > select master1.*, detail1.* from master1 m, detail1 d where mcode=dcode
    >  *
    > ERROR at line1:
    > ORA-00942: table or view does not exist
    >
    >
    
    José