我有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编写类似的查询?
谢谢!
答案 0 :(得分: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表实际上有更多包含您需要的信息的字段,您也可以加入该表并选择所需的字段。