Обсуждение: Tables names from query
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
>>>>> "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
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
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 ?