【发布时间】:2015-09-21 14:49:46
【问题描述】:
我正在尝试找到一种将 sqlite3 查询转换为活动记录格式的方法。
我的查询是:
SELECT first_name,last_name,title,checkin,checkout
FROM books, checkouthistories, users
WHERE checkouthistories.isbn = isbn and books.isbn = isbn AND
checkouthistories.email = users.email`
我确实知道如何使用 select 函数和 where 子句从一个表中进行选择,但我无法找到使用多个表和多个 where 子句的方法
【问题讨论】:
-
好吧,你遇到了一些问题。 1) SELECT 中的哪一列属于哪个表? 2)表之间的关系是什么? 3)如果你需要从多个表中聚合数据,为什么不创建一个视图,然后通过ActiveRecord从视图中选择?
-
名字和姓氏来自用户表,标题来自书籍表和签入,签出来自 checkouthistory 表。
-
好的,太好了。现在你有 2 个问题要回答。 1)什么是关系? 2) 你考虑过使用视图吗?
-
@SrdjanPejic 我没有考虑过使用视图。我不确定我应该如何使用它们,尤其是在 ActiveRecords 的上下文中。同样对于 user 表中的每个电子邮件 ID,checkouthistory 表中将有多个记录。此外,对于 book 表中的每个 isbn,checkouthistory 表中都会有多个签入、签出值
-
视图看起来像 ActiveRecord 的表格,这是一个如何做到这一点的示例,benfranklinlabs.com/…。另外,如果这里有实际关系,@tim5046 提供的解决方案将是一个很好的起点。
标签: ruby-on-rails activerecord sqlite