【发布时间】: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