Re: [HACKERS] SELECT BUG
От | José Soares |
---|---|
Тема | Re: [HACKERS] SELECT BUG |
Дата | |
Msg-id | 37D4EADC.C7266B13@sferacarta.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] SELECT BUG (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [HACKERS] SELECT BUG
|
Список | pgsql-hackers |
Tom Lane ha scritto: > José 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é
В списке pgsql-hackers по дате отправления: