Thread: My query table aliases don't exist in my application
Hello everyone,
I'm going a complex join on 5 tables and some of them have a column that repeats in two tables called "name". So I created an alias for each table, one of them called co, and in my application I do a result.getString("co.name"). But the application fails with: "The column name co.name was not found in this ResultSet."
When I test this same code against a MySQL database it returns the right column. I tried doing just a result.getString("name") but as I expected it just returned the first column called "name" instead of the one I want.
Is this a bug in the JDBC driver, or am I doing it wrong?
Hugo Garza <hiro2k@gmail.com> wrote: > I'm going a complex join on 5 tables and some of them have a > column that repeats in two tables called "name". So I created an > alias for each table, one of them called co, and in my application > I do a result.getString("co.name"). But the application fails > with: "The column name co.name was not found in this ResultSet." Try giving the result column an alias: select co.name as co_name Then access it by the name you have given it. Personally, I've never seen that other usage, and would never have expected it to work. -Kevin
Right. Even if you explicitly include the table alias, PostgreSQL strips it out before sending column metadata, so according to the server, the column name of SELECT x.a FROM foo x; is just "a", not "x.a". The driver is just playing along. If you really like the alias names, you can use the somewhat perverse SELECT x.a as "x.a" FROM foo x; --- Maciek Sakrejda | System Architect | Truviso 1065 E. Hillsdale Blvd., Suite 215 Foster City, CA 94404 www.truviso.com
Thank you guys, I will have to update my program code. But it makes a lot more sense to have the columns with more signifcant names.
On Tue, Feb 1, 2011 at 4:52 PM, Maciek Sakrejda <msakrejda@truviso.com> wrote:
Right. Even if you explicitly include the table alias, PostgreSQL
strips it out before sending column metadata, so according to the
server, the column name of
SELECT x.a FROM foo x;
is just "a", not "x.a". The driver is just playing along. If you
really like the alias names, you can use the somewhat perverse
SELECT x.a as "x.a" FROM foo x;
---
Maciek Sakrejda | System Architect | Truviso
1065 E. Hillsdale Blvd., Suite 215
Foster City, CA 94404
www.truviso.com