0

我有 3 个模型:

  1. 产品
  2. 每日日志
  3. 点击

表格如下所示:

Products
id

,

Daily Logs
id | product_id | price

,

Clicks
id | product_id | daily_log_id

对于报告,我想获取所有累计超过 x 成本(基于每次点击价格)的产品。

在 Ruby 中,代码可能看起来像

products.select do | p |
  cost = 0
  p.daily_logs.each do | dlog |
    cost += dlog.clicks.count * dlog.price
  end

  cost > x ? true : false      
end

我如何为 mysql 编写类似的查询?

谢谢!

4

1 回答 1

0

我认为这就是你要找的:

SELECT dl.product_id AS `product_id`, COUNT(c.id) AS `total_clicks`, SUM(dl.price) AS `total_price`
FROM daily_logs AS dl
INNER JOIN clicks AS c on dl.id = c.daily_log_id
WHERE `total_price` > ?
GROUP BY `product_id`

注意我没有加入 products 表,因为它只有一个 id 字段,该字段在 daily_logs 表中也可用。如果 products 表实际上有更多包含您需要的信息的字段,您也可以加入该表并选择所需的字段。

于 2013-01-29T00:18:44.377 回答