续集加入表但我有重叠的列名。我如何为这些列名称添加别名?

时间:2015-01-03 18:25:18

标签: ruby sequel

这是我加入两个表的代码:

DB.from(:sources).join(:payloads, :source_id => :id)

表格名称为:sources:payloads

问题是有效负载中有:id列会覆盖:id中的:sources列。我需要使用别名,以便我只获取一个包含所有列名称的超级表。但是,正如当前编写的那样,并且我的表当前是结构化的,:id列正在合并,第二个表优先。这有意义吗?

如何制作别名,以便:id中的:sources列仍然显示?

2 个答案:

答案 0 :(得分:6)

要将sources.id别名为其他名称,请使用Identifier aliases

.select_append(:sources__id___source_id).join...
# *, `sources`.`id` AS 'source_id'

答案 1 :(得分:4)

我认为这是一个使用续集的graph会帮助你的情况。

来自文档:

  

与#join_table类似,但对所选列使用明确的别名,并保留有关别名的元数据,以便在其他方法中使用。

您遇到的问题是,一个表中具有相同名称的列与另一个表中的相同列名冲突。续集使用graph应确保将表名和列作为键返回,而不仅仅是列。

各种文档文件都有很多例子,这些例子可以提供很长的答案,因此我建议您浏览文档,搜索用途,看看它们是如何为您工作的。

此外,续集IRC频道也可以成为这类问题的重要资产。