我有以下查询,我需要将其转换为类似语法的 rails。有什么方法可以做到这一点,还是只使用普通的 MYSQL 更好?
SELECT `terminals`.`serial`, Count(*) AS count, MAX(`logs`.`created_at`) AS created_at
FROM
(SELECT * FROM `terminals` WHERE `terminals`.`user_id`= 1) AS terminals
INNER JOIN `bap-backend`.`logs` ON terminals.`serial`=`logs`.`serial`
GROUP BY `serial` ORDER BY `logs`.`created_at`
内部 Select 是为了确保只有 current_user 的终端被选中,然后我只需要终端串行。我需要这个查询来概述所有用户的终端,并显示终端提供了多少日志以及最后一个日志发生的时间。该查询适用于我的测试数据,只有 Rails 中的实现对我来说有点复杂。
谢谢!
编辑
对于谷歌的人,只需使用 find_by_sql,您仍然可以在其中添加变量。只需在命令前添加一个类,如下例所示:
@items_event = Item.find_by_sql(["SELECT items.*, ei_relationships.itemprice, ei_relationships.currency, ei_relationships.itemunit
FROM `ei_relationships` INNER JOIN `items` ON `items`.`id` = `ei_relationships`.`item_id`
WHERE `ei_relationships`.`event_id` = ?", @event[:id]])