【问题标题】:Sequel select columns with same names results removing columns续集选择具有相同名称的列导致删除列
【发布时间】:2021-12-12 06:05:08
【问题描述】:

我正在加入具有相同名称的列的不同表。当我第一次尝试选择它们时,我遇到了ambiguous column name 错误,即存在同名的列。因此,我明确选择了列,但现在我得到的列比我请求的要少。

  response = DB[:courses].select(Sequel[:courses][:id], Sequel[:courses][:title], Sequel[:courses][:headline], Sequel[:courses][:description], Sequel[:courses][:slug], Sequel[:courses][:avg_duration], Sequel[:courses][:points], Sequel[:courses][:intro_video_url], Sequel[:courses][:background_color], Sequel[:courses][:views], Sequel[:courses][:certificate_option], Sequel[:courses][:url], Sequel[:courses][:is_active], Sequel[:courses][:num_subscribers], Sequel[:courses][:num_reviews], Sequel[:courses][:num_finished], Sequel[:courses][:avg_rating], Sequel[:courses][:avg_rating_recent], Sequel[:locales][:title], Sequel[:locales][:english_title], Sequel[:courses][:has_caption], Sequel[:courses][:is_paid], Sequel[:courses][:price], Sequel[:courses][:price_discount], Sequel[:courses][:currency], Sequel[:instructors][:headline], Sequel[:instructors][:name], Sequel[:instructors][:slug], Sequel[:instructors][:image], Sequel[:instructors][:initials], Sequel[:instructors][:url], Sequel[:instructors][:origin_id], Sequel[:courses][:image_preview], Sequel[:courses][:image_view], Sequel[:difficulties][:name], Sequel[:course_types][:name], Sequel[:origins][:image_url], Sequel[:origins][:name], Sequel[:origins][:url_about])
    .join(:locales, id: Sequel[:courses][:locale_id])
    .join(:instructors, id: Sequel[:courses][:instructor_id])
    .join(:origins, id: Sequel[:courses][:origin_id])
    .join(:difficulties, id: Sequel[:courses][:difficulty_id])
    .join(:course_types, id: Sequel[:courses][:course_type_id])
    .where(Sequel.ilike(Sequel[:courses][:title], "%#{title}%")).where( is_paid: is_paid).limit(count).offset(count * (page - 1))

我希望得到 38 列,但我得到了 32 列。我尝试仅显式获取列 (select.columns) 或通过映射 (select.map) 获取,但结果是相同的。当我在 SQLite 提示符下本地执行此请求时,它会返回准确的 38 列。我还尝试使用 gem sqlite3 进行查询,但是相同的提示只导致 32 列。

如何在不做出任何牺牲的情况下获得所有列?我可以在选择时重命名还是有其他解决方案?

【问题讨论】:

  • 我可以在进行选择时重命名名称还是有其他解决方案?是的,您可以在 select 语句中为列设置别名Docs

标签: sql ruby sequel


【解决方案1】:

首先,您需要为每个表指定一个别名。然后,当您编写 select 语句时,在您选择的每一列前面加上表别名,如 alias.column_name。

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2021-11-12
    • 2019-11-11
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多