Обсуждение: Tables names from query

Поиск
Список
Период
Сортировка

Tables names from query

От
Philip Shiels
Дата:
I'm currently developing a postgres DB backend to my current project and have
the following problem. If I execute a query I need to know the table the
returning fields belong to. For example :

SELECT x.y, z.y from x, y where x.key = z.key

The problem with the above is that I get back 2 fields called 'y' and have no
way of knowing from which tables they've come from. The query is arbitrary so I
cannot assume table order in the SQL statement (Icannot assume anything about
the query except that it's a SELECT).

What information from the 'C' or 'C++' APIs can help ?

Is there is a way of identifying the originating tables ?

Thanks
        Philip
--------------------------------------------------------------------------
Philip Shiels     E-Mail:Philip.Shiels@jrc.it      JRC Ispra, Italy, TP270
GIST:http://gist.jrc.it CEO:http://www.ceo.org GEM:http://gem.jrc.it

Re: [INTERFACES] Tables names from query

От
tolik@icomm.ru (Anatoly K. Lasareff)
Дата:
>>>>> "PS" == Philip Shiels <philip.shiels@jrc.it> writes:

 PS> I'm currently developing a postgres DB backend to my current project and have
 PS> the following problem. If I execute a query I need to know the table the
 PS> returning fields belong to. For example :

 PS> SELECT x.y, z.y from x, y where x.key = z.key

select x.y as xy, z.y as zy from x, y where x.key = z.key
           ^^^^^      ^^^^^
????

--
Anatoly K. Lasareff              Email:       tolik@icomm.ru
Senior programmer

Re: [INTERFACES] Tables names from query

От
Tom Lane
Дата:
Philip Shiels <philip.shiels@jrc.it> writes:
> I'm currently developing a postgres DB backend to my current project and have
> the following problem. If I execute a query I need to know the table the
> returning fields belong to. For example :

> SELECT x.y, z.y from x, y where x.key = z.key

Can you use "SELECT AS"?  For instance

    SELECT x.y AS x_y, z.y AS z_y WHERE ...

A bit grotty, but there's no hope of changing the column-labeling
behavior without modifying the innards of the backend; the column names
you see in psql are all the info there is on the client side.

I dunno whether it would be a good idea to change the backend's column
labeling rules for this case or not.  I'd be worried about breaking
existing applications that depend on the current labeling rules...

            regards, tom lane

Re: [INTERFACES] Tables names from query

От
Bob VonMoss
Дата:
Philip Shiels wrote:

> SELECT x.y, z.y from x, y where x.key = z.key
>
> The problem with the above is that I get back 2 fields called 'y' and have no
> way of knowing from which tables they've come from.

Do something like this:

SELECT x.y, z.y AS z_y from x, z where x.key = z.key;

> Is there is a way of identifying the originating tables ?