这是我加入两个表的代码:
DB.from(:sources).join(:payloads, :source_id => :id)
表格名称为:sources
,:payloads
。
问题是有效负载中有:id
列会覆盖:id
中的:sources
列。我需要使用别名,以便我只获取一个包含所有列名称的超级表。但是,正如当前编写的那样,并且我的表当前是结构化的,:id
列正在合并,第二个表优先。这有意义吗?
如何制作别名,以便:id
中的:sources
列仍然显示?
答案 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频道也可以成为这类问题的重要资产。