Thread: My query table aliases don't exist in my application

My query table aliases don't exist in my application

From
Hugo Garza
Date:
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?

Re: My query table aliases don't exist in my application

From
"Kevin Grittner"
Date:
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

Re: My query table aliases don't exist in my application

From
Maciek Sakrejda
Date:
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

Re: My query table aliases don't exist in my application

From
Hugo Garza
Date:
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