Re: Table Alias

From: "Darrin Ladd" <darrin_ladd(at)hotmail(dot)com>
To: sszabo(at)megazone23(dot)bigpanda(dot)com
Cc: pgsql-general(at)postgreSQL(dot)org
Subject: Re: Table Alias
Date: 2000-08-29 21:59:48
Message-ID: F243LCySCOCd4hgvpuH00002a8b@hotmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thanks, that makes sense.

Although, I'd much rather have an error then the wrong data. :(

Cheers,
Darrin

>From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
>To: Darrin Ladd <darrin_ladd(at)hotmail(dot)com>
>CC: pgsql-general(at)postgreSQL(dot)org
>Subject: Re: [GENERAL] Table Alias
>Date: Tue, 29 Aug 2000 17:48:57 -0700 (PDT)
>
>
>On Tue, 29 Aug 2000, Darrin Ladd wrote:
>
> > Through the help of some inexperienced embedded SQL coders I stubled
>across
> > a strang Postgres quirk. I am wondering if this is normal or if I have
> > configured something incorrectly. Here's the situation...
> >
> > The following two selects return very different values:
> >
> > select b.name from foo f, bar b
> > where f.foo_id = 1
> > and f.bar_id = b.bar_id;
> >
> > select bar.name from foo f, bar b
> > where f.foo_id = 1
> > and f.bar_id = b.bar_id;
> >
> > The first returns the rows in the name column of bar that have the same
> > bar_id as the foo record with foo_id = 1. (Correct)
> >
> > The second returns all rows in the name column of the bar table. (?)
> >
> > I am quite aware that if you declare an alias for a table that you
>should
> > use it, but I am very surprised that the select becomes unqualified if
>you
> > mistakenly use the full table name. Is this normal behavior?
>
>Well, technically by SQL92 I believe the second query should be an error
>since the table reference "bar b" should not be exporting the name "bar"
>unless I'm misreading the spec...
>
>Postgres tries to be helpful by assuming you meant to put it in the from
>list and adds it internally, so the second query is effectively:
> select bar.name from foo f, bar b, bar
> where f.foo_id=1 and f.bar_id=b.bar_id.
>
>-----
> <table reference> ::=
> <table name> [ [ AS ] <correlation name>
> [ <left paren> <derived column list> <right paren> ] ]
> Syntax Rules
> 1) A <correlation name> immediately contained in a <table refer-
> ence> TR is exposed by TR. A <table name> immediately contained
> in a <table reference> TR is exposed by TR if and only if TR
> does not specify a <correlation name>.
>

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

Share information about yourself, create your own public profile at
http://profiles.msn.com.

Browse pgsql-general by date

  From Date Subject
Next Message Mitch Vincent 2000-08-29 22:01:20 Weighted Searches
Previous Message Miguel Omar Carvajal 2000-08-29 21:45:29 C++ Example