我已经能够让
sql:prepared-query($connection, $sql)()
处理简单的 SQL。
SELECT column1 FROM table
这效果很好,我可以使用
$sql-result-map[1]?column1
访问该值
它也适用于一些连接。但是,当我连接两个具有相同列名的表,并且查询指定要返回哪些列时,映射具有列名的键,但没有值。
SELECT table1.column1 FROM table table1 JOIN table table2
返回序列中的映射显示
map:keys($sql-result-map[1])
中的关键列1,但$sql-result-map[1]?column1
始终为空。
我还注意到地图键不遵循任何 AS 别名,因此
SELECT column1 AS column_alias FROM table
不会更改所使用的键。
关于如何解决这些限制有什么建议吗?
我怀疑正在发生的事情是,在查询返回的
ResultSetMetaData
中,两列为 getColumnName()
返回相同的结果,当然在我们返回的映射中,每个键都需要是唯一的。我需要 (a) 确认情况确实如此,以及 (b) 决定如何处理。我们可能应该使用 getColumnLabel()
的结果作为密钥,而不是 getColumnName()
的结果。