显示 Rails 中多个表的数据

发布于 2024-11-02 16:59:27 字数 559 浏览 1 评论 0原文

我有多个通过主键-外键关系相关的表。另外,我在这些表的顶部有彼此独立的模型。现在,我需要一个显示多个表中的数据的视图。我该怎么做?我应该使用每个表的属性创建一个虚拟模型吗?如果是这样,我该如何以及在哪里对这些多个表执行查询。任何代码片段都会有很大帮助。

为了更清楚,这里有一个例子。假设这些是下表。

表 1:pk、attr1、attr2、attr3、attr4、attr_fk_table2、attr_fk_table3、attr_fk_table4 表 2:

pk、attr1、attr2、attr3、attr4、attr5

表 3:pk、attr1、attr2、attr3

表 4:pk、attr1、attr2、

attr3表1、2、3、4的模型是独立的。我的意思是说在模型级别它们之间不存在 has_one 或 Belongs_to 关系。

现在我需要一个具有以下属性的视图

Table1:attr1、Table1:attr2、Table2:attr5、Table3:attr3、Table4: attr2

我该如何执行此操作?

谢谢

I have multiple tables that are related by primary key-foreign key relationship. Also, I have models that are independent of each other on top of these tables. Now, I need a view that displays the data from multiple tables. How should I do this? Should I create a dummy model with attributes from each of the table? If so, how and where do I perform the query to these multiple tables. Any code snippets will be of great help.

To be more clear, here is an example. Assume these are the following tables.

Table1: pk, attr1, attr2, attr3, attr4, attr_fk_table2, attr_fk_table3, attr_fk_table4

Table2: pk, attr1, attr2, attr3, attr4,attr5

Table3: pk, attr1, attr2, attr3

Table4: pk, attr1, attr2, attr3

Also the models of tables 1,2,3,4 are independent. I mean to say there is no has_one or belongs_to relation between them at the model level.

Now I need a view with the following attributes

Table1:attr1, Table1:attr2, Table2:attr5, Table3:attr3, Table4: attr2

How can I do this?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仙女山的月亮 2024-11-09 16:59:27

使用 find_by_sql

sql = %{
  select
    t1.attr1, t1.attr2, t2.attr5, t3.attr3, t4.attr2
  from
    Table1 t1, Table2 t2, Table3 t3, Table4 t4
  where
    t1.attr_fk_table2 = t2.pk
    and t1.attr_fk_table3 = t3.pk
    and t1.attr_fk_table4 = t4.pk
}

result = find_by_sql(sql)

Use find_by_sql:

sql = %{
  select
    t1.attr1, t1.attr2, t2.attr5, t3.attr3, t4.attr2
  from
    Table1 t1, Table2 t2, Table3 t3, Table4 t4
  where
    t1.attr_fk_table2 = t2.pk
    and t1.attr_fk_table3 = t3.pk
    and t1.attr_fk_table4 = t4.pk
}

result = find_by_sql(sql)
旧时浪漫 2024-11-09 16:59:27

听起来您需要做的就是编写一个查询,将数据聚合到正确的结构中,然后简单地获取它:

ActiveRecord::Base.connection.select_rows("
  SELECT table1.attr1, table1.attr2, table2.attr5, table3.attr3, table4.attr2
   FROM table1
   LEFT JOIN table2 ON table1.attr_fk_table2=table2.pk
   LEFT JOIN table3 ON table1.attr_fk_table3=table3.pk
   LEFT JOIN table4 ON table1.attr_fk_table4=table4.pk
").each do |row|
  # ...
end

您将以一系列行的形式返回数据,其中第 0 项是 table1.attr代码>等等。

It sounds like what you need to do is write a query that aggregates the data into the correct structure, then simply fetch it:

ActiveRecord::Base.connection.select_rows("
  SELECT table1.attr1, table1.attr2, table2.attr5, table3.attr3, table4.attr2
   FROM table1
   LEFT JOIN table2 ON table1.attr_fk_table2=table2.pk
   LEFT JOIN table3 ON table1.attr_fk_table3=table3.pk
   LEFT JOIN table4 ON table1.attr_fk_table4=table4.pk
").each do |row|
  # ...
end

You'll get the data back as a series of rows where item 0 is table1.attr and so forth.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文