sql - 联合所有并保持活跃的记录关系?
问题描述
这是我的查询
SELECT * FROM (SELECT id as broadcast_id, null as message_id, company_id, title, category, publish_at as created_at, image_file_name, null as is_featured, summary, video_link, file FROM broadcasts
UNION ALL
SELECT null, id, company_id, title, 'user_video', created_at, cover_photo_file_name, is_featured, content, video_link, null FROM `messages` WHERE video_link is not null and video_link != '')my_table
ORDER BY created_at DESC LIMIT 15
我想将所有内容保持为广播活动记录关系。
我实际上是使用活动记录扩展 gem 来完成这项工作的
legacy_broadcasts = Broadcast.select(:id, "null as message_id", :publish_at, :company_id, :title, :category, :image_file_name, :summary, "null as is_featured", :file, :video_link, :url)
user_videos = Message.select("null", :id, :created_at, :company_id, :title, "\"user_video\" as category", :cover_photo_file_name, :content, :is_featured, "null as file", :video_link, "null as url").where('video_link is not null and video_link != \'\'')
base = Broadcast.union_all(legacy_broadcasts, user_videos)
.includes(:company)
.published
.order(publish_at: :desc)
@q = base.ransack(params[:q])
@video_broadcasts = base.has_video_link
.paginate(
page: page,
per_page: 5)
.to_a
@broadcasts = @q
.result
.paginate(
page: page,
per_page: 9)
.to_a
但不幸的是,我不允许将 pg gem 添加到活动记录扩展 gem 所需的 prod 中。关于如何最好地做到这一点的任何想法?
解决方案
我所做的是使用 gem 并复制它创建的查询。从那里我做了以下
legacy_broadcasts = Broadcast.select(:id, "null as message_id", :publish_at, :company_id, :title, :category, :image_file_name, :summary, "null as is_featured", :file, :video_link, :url).includes(:company).to_sql
user_videos = Message.select("null", :id, :created_at, :company_id, :title, "\"user_video\" as category", :cover_photo_file_name, :content, :is_featured, "null as file", :video_link, "null as url").where('video_link is not null and video_link != \'\'').includes(:company).to_sql
base = Broadcast.from("(((#{legacy_broadcasts} ) UNION ( #{user_videos} ))) broadcasts")
.includes(:company)
.published
.order(publish_at: :desc)
推荐阅读
- neural-network - 深度强化学习
- c# - 连接到 MS Access 数据库 2000 - 2003 格式的 Visual Studio C# Windows 窗体中的登录功能。研究并尝试修复无济于事
- ansible - status_code 的状态码范围
- mysql - 如何从mysql数据库中搜索特定关键字
- z3 - 使用 Z3 库复制反编译的 C 代码
- django - 使用 django 在一个打开的选项卡中注销时自动在所有选项卡中注销
- ios - 在 iOS 上将 SwiftUI 视图转换为 PDF
- node.js - 角度的木偶 - 打印pdf
- c# - 当文件由于 TFS 为只读时,在 Windows 上从 Visual Studio 2019 运行 Docker 会导致 /app/appsettings.json 出现 UnauthorizedAccessException
- javascript - 使用纯 JavaScript 应用 Google recaptcha V3