Sequel 连接表,但我有重叠的列名。如何为这些列名称起别名?

Sequel joining tables but I have overlapping column names. How do I alias these column names?

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

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

table 个名字是 :sources:payloads

问题是有效负载中有一个 :id 列覆盖了 :sources 中的 :id 列。我需要使用一个别名,这样我就可以获得一个包含所有列名的 mega table。然而,正如目前所写的和我的 table 目前的结构,:id 列正在合并,第二个 table 优先。这有意义吗?

如何创建别名以便 :sources 中的 :id 列仍然显示?

我认为在这种情况下使用 Sequel 的 graph 会对您有所帮助。

来自文档:

Similar to #join_table, but uses unambiguous aliases for selected columns and keeps metadata about the aliases for use in other methods.

您遇到的问题是一个 table 中的同名列与另一个中的同名列冲突。 Sequel 对 graph 的使用应确保 table 名称和列作为键返回,而不仅仅是列。

各种文档文件有很多示例,这会是一个很长的答案,所以我建议您浏览文档,搜索用途,看看它们如何为您工作。

此外,Sequel IRC 频道也是解决这类问题的好方法。

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

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