【问题标题】:Sequel joining tables but I have overlapping column names. How do I alias these column names?续集连接表,但我有重叠的列名。如何给这些列名取别名?
【发布时间】:2015-01-03 18:25:18
【问题描述】:

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

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

表名是:sources:payloads

问题是有效载荷中有一个:id 列覆盖了:sources 中的:id 列。我需要使用别名,以便获得一个包含所有列名的巨型表。但是,按照目前编写的以及我的表目前的结构,:id 列正在合并,第二个表优先。这有意义吗?

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

【问题讨论】:

    标签: ruby sequel


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      来自文档:

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

      您看到的问题是一个表中的同名列与另一个表中的相同列名发生冲突。 Sequel 对graph 的使用应确保将表名和列作为键返回,而不仅仅是列。

      各种文档文件有许多示例,这将是一个很长的答案,因此我建议您阅读文档,搜索用途,看看它们如何为您工作。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-02
        • 2020-07-05
        • 2010-11-28
        • 1970-01-01
        • 2018-04-25
        • 1970-01-01
        相关资源
        最近更新 更多