mysql - Rails/Mysql 复杂连接和 where 查询

标签 mysql ruby-on-rails join where-clause

嘿,我被这个问题难住了,我想了想,但似乎无法全神贯注。

我有三个表,帐户、供应商和分数

一个帐户有多个供应商,一个供应商有多个分数。

我想要做的是显示两周内与帐户相关的所有已更改或创建的分数。我不想拉动整个数据库,因为它有超过 200 万行代码,所以我想让计算由 sql 执行。

问题在于如何制定清晰的sql语句。

这是我的想法。

sql=""
scores = ActiveRecord::Base.connection.execute(sql)
@scorecards = []
@scorecards {|sc| sc << scores}

这样我就可以将所有结果保存在一个数组中,并且能够从那里使用它们。

我的sql语句如下所示:

SELECT * FROM sms_development.scores WHERE DATE(created_at) = CURDATE() - INTERVAL 14 DAY AND CURDATE() OR DATE(updated_at) = CURDATE() - INTERVAL 14 DAY AND CURDATE();

现在,我感到困惑的是,我必须为每个记分卡运行此语句,然后将其与供应商表中的 Score_id 相匹配,然后将供应商 id 与帐户表中的 sellers_id 相匹配。

在 SQL 查询中完成此操作的最佳方法是什么?抱歉,如果这是一个简单的问题,我是 MySQL 新手。这看起来可能会变得毛茸茸的。

最佳答案

我会让 Rails 为你处理这个问题。

has_many :scores, :through => :suppliers 添加到您的帐户模型,并将 belongs_to :account 添加到您的分数模型,然后使用以下方式加载分数:

Scores = @account.scores.where("created_at > ? Or updated_at > ?", 2.weeks.ago, 2.weeks.ago)

关于mysql - Rails/Mysql 复杂连接和 where 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11576697/

相关文章:

mysql 从 3 个表中选择,其中并非所有表都包含相同行数的信息(内连接?!)

php - 在 Colorbox 灯箱中处理表单

ruby-on-rails - ActiveRecord touch 是否对多个工作人员是并发安全的?

MYSQL:将行连接为列

ruby-on-rails - Rails 3中有没有什么好的方法来实现嵌套表单?

ruby-on-rails - Rails 2.3.3 各国都搬到哪里去了

sql - 在单个 SQL 请求中连接来自不同表的聚合结果

sql - MySQL 查询语法帮助

mysql - mysql 中 ON DUPLICATE KEY UPDATE 查询中的问题

mysql - 尝试将 mysql 表从一个数据库复制到另一个数据库时出错