编写单个Rails活动记录查询以通过与两个表关联来获取所有项?

汤加杜赖奈纳马莱

我有三个表,例如vendor,location,technology和两个关联表,例如vendor_location,vendor_technology。

关联如下

vendor.rb

has_many :vendor_technologies
has_many :vendor_locations
has_many :locations, through: :vendor_locations
has_many :technologies, through: :vendor_technologies

location.rb

has_many :vendor_locations
has_many :vendors, through: :vendor_locations

technology.rb

has_many :vendor_technologies
has_many :vendors, through: :vendor_technologies

vendor_location.rb

belongs_to :location
belongs_to :vendor

vendor_technology.rb

belongs_to :technology
belongs_to :vendor

从上表中,我需要

1) vendors in locations (india)
need: list of vendors
2) vendors in technology (php)
need: list of vendors
3) vendors in technology and location (php and india)
need: list of vendors

对于上述要求,我需要三个单查询而不使用联接操作。因为,join需要更多的内存(供应商表有12列)

阿杰

为什么您要维护这么多表,我们可以像这样简单地做:

 #vendor.rb 
   has_many :locations 
   has_many :technologies

#location.rb 
  belongs_to :vendor

#technology.rb
  belongs_to :technology

现在只加载一次供应商列表:

 @vendors =  Vendor.includes(:locations, :technologies)

现在,根据您的条件获取所需的数据。这里很棒的事情是根据您的条件获取数据不会触发任何额外的查询。

 @vendors.first.locations.select {|x|  x.place == 'India' }
 @vendors.first.technologies.select {|x|  x.tech_name  == 'PHP' }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Hibernate加入两个表并获取所有记录?

获取两个表中都存在的所有记录

如何使用codeigniter活动记录编写查询以获取两个日期之间的行数据?

如何编写查询以从单个字段中的两个表中获取数据

无法编写正确的查询来连接两个表并获取我需要的内容

从两个相互关联的表中获取记录-symfony

通过映射第三个表查询联接两个表,而无需从Oracle中的第三个表返回所有记录

SQL查询通过关联两个表中的两个单独的单位来从一个表中除一个值

从两个表中获取所有记录的唯一通用记录?

如何查询两个表,表1中的某些项与table2没有关联?

MYSQL Union All 不通过两个合并查询返回所有记录

访问-在两个字段上联接两个表,从表A中获取所有记录

Rails has_many通过查询,又有两个引用,也使用通过表属性

SQL查询从两个表中获取不同的记录

如何在Laravel中使用Api从两个表中获取所有记录

mysql查询加入,比较两个表并返回第一个表中的所有记录

两个表之间的Rails关联

优化SQL查询-从第二个表中有多行的两个表中获取记录

如何从两个列获取2 id并从另一个表获取所有记录

对象上有两个日期字段,例如 Date1 和 Date2,现在我想在 SOQL 编辑器中编写一个 SOQL 查询以获取所有对象记录

DataTable中的重复项,通过指定两个属性来获取最后一个

是否可以在单个查询中编写具有两个条件的两个 UPDATE 函数?

我想编写一个 sql 查询来获取存在于 oracle 表的 clob 列中的soap xml 中的两个标签之间的数据

单个 SQL Server 查询删除两个表中的记录

Oracle 使用单个查询更新和更改两个表中的几列记录

如何查找两个表中都存在的记录以及左表中的所有记录?

将两个表连接到Ruby / Rails活动记录中

如何获取表中所有年份的两个日期(月和日)之间的记录?

配置单元通过删除重复项来联接两个表