0

テーブル エイリアスを使用して結合した後、プロパティを別のテーブルと区別するにはどうすればよいですか?

簡単な例として、多くのプロパティを持つ 2 つのテーブルがあります。プロパティ名は一意ではありませんid。たとえば、両方のテーブルに - があります。

今-私は次の例示的なクエリを持っています:

SELECT * FROM tableA ta INNER JOIN tableB tb ON ta.id = tb.a_id

両方の「id」プロパティの値を取得するにはどうすればよいですか?

以下は機能しませんでした:

def sql = Sql.newInstance("jdbc:mysql://${MYSQL_SERVER}/${MYSQL_TABLE}", MYSQL_USER, MYSQL_PASSWORD, "com.mysql.jdbc.Driver")
sql.eachRow (query){ row ->
    println "ID of the 'table a object' : ${row['ta.id']}"
    println "ID of the 'table b object' : ${row['tb.id']}"
}

これにより、次のエラーが表示されます。java.sql.SQLException: Invalid column name ta.id

私の一時的な - しかし望ましくない - 解決策は、クエリでプロパティを指定することです:

SELECT ta.id as aID, tb.id as bID, * FROM tableA ta INNER JOIN tableB tb ON ta.id = tb.a_id

と の両方tableAtableBは、重複する可能性のある多くのプロパティがあり、それぞれ手動で指定することはできません。

機能させるにはどうすればよいですか?

4

1 に答える 1

1

あなたが説明していることの実例があります:

sql.eachRow("select * from Group_ G inner join Organization_ O on G.name = O.organizationId")  { row ->
    println "${row['G.name']} ${row['O.name']}"
}

あなたのコードから、私が見るものは次のとおりです。

ON ta.id = tb.a_id

アクセスしようとしているプロパティとは異なります:

row['ta.id']
row['tb.id'] // tb.a_id?
于 2012-05-07T14:21:50.700 に答える