Postgresql 多表请求中的pqxx列名

Postgresql 多表请求中的pqxx列名,postgresql,libpqxx,Postgresql,Libpqxx,这是一个具体的问题 给定如下所示的SQL语句: string s = "SELECT a.foo, b.bar FROM tableOne a, tableTwo b WHERE a.X=b.X" 并将其发送至pqxx交易: trans.exec(s.c_str(), s.c_str()); 结果字段中的列将具有什么名称 换句话说,假设选择了1行: pqxx::result::const_iterator row = result.begin(); int foo = row->at(

这是一个具体的问题

给定如下所示的SQL语句:

string s = "SELECT a.foo, b.bar FROM tableOne a, tableTwo b WHERE a.X=b.X"
并将其发送至pqxx交易:

trans.exec(s.c_str(), s.c_str());
结果字段中的列将具有什么名称

换句话说,假设选择了1行:

pqxx::result::const_iterator row = result.begin();
int foo = row->at(FOO_COLUMN).as<int>();
int bar = row->at(BAR_COLUMN).as<int>();
pqxx::result::const_iterator row=result.begin();
int foo=row->at(foo_列).as();
int bar=row->at(bar_COLUMN).as();
FOO_列和BAR_列应该有哪些值?它们会分别是“a.foo”和“b.bar”吗

如果SQL语句使用“as”关键字重命名了变量,那么我想列名应该是“as”设置的名称,对吗

通常我会尝试使用SQL并打印列值,但由于我正在开发软件和数据库本身,现在做这个测试并不容易


谢谢

名称将是
foo
bar
。如果它们是查询中的别名,那么将返回别名,原始名称将丢失

结果中的列名从不包含表名

如果它们被命名为
tablename.colname
,则无论如何都是不明确的,因为
选择1作为“foo.colname”
是有效的,并生成一列
foo.colname
,尽管事实上没有
foo

识别列的起始表的方法是调用
pqxx::result::column\u table(column\u number)
,返回表的
oid
。该表的名称不能直接使用,但可以在
pg_class
中使用
oid
查询


还要注意,列名在resultset中不必是唯一的<代码>选择1作为a,选择2作为a是有效的,并生成两个名称完全相同的列。

名称将是
foo
bar
。如果它们是查询中的别名,那么将返回别名,原始名称将丢失

结果中的列名从不包含表名

如果它们被命名为
tablename.colname
,则无论如何都是不明确的,因为
选择1作为“foo.colname”
是有效的,并生成一列
foo.colname
,尽管事实上没有
foo

识别列的起始表的方法是调用
pqxx::result::column\u table(column\u number)
,返回表的
oid
。该表的名称不能直接使用,但可以在
pg_class
中使用
oid
查询


还要注意,列名在resultset中不必是唯一的<代码>选择1作为a,选择2作为a是有效的,并生成两个名称完全相同的列。

at
采用
size\u类型(无符号长),因此您可能会使用位置号。是的,有一个版本的at采用列位置,如果必须,我可以将其用作解决方法。但我认为字符串版本更好,以防SQL将来发生变化。因此,我很好奇这些列的名称。
at
采用
size\u类型(无符号长),因此您可能会使用位置号。是的,有一个版本的at采用列位置,如果有必要,我可以将其用作解决方法。但我认为字符串版本更好,以防SQL将来发生变化。所以我很好奇这些列有什么名称..啊哈,那么PostgreSQL数据库返回列名作为其响应的一部分,这些是在pqxx::result元组中使用的?啊哈,那么PostgreSQL数据库返回列名作为其响应的一部分,这些是在pqxx::result元组中使用的?