编写单个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条评论
登录后参与评论

相关文章

来自分类Dev

查询两个表中的所有记录

来自分类Dev

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

来自分类Dev

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

来自分类Dev

连接两个表,但仅获取最新的关联记录

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

yii2:无法从具有活动记录的两个表中获取数据

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

从两个不同的表中选择所有记录

来自分类Dev

两个表之间的Rails关联

来自分类Dev

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

来自分类Dev

Rails活动记录关联:从多个表中获取数据

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何从两个表中获取第三条中不存在的所有记录

来自分类Dev

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

来自分类Dev

Grails中的SQL查询可从两个具有外键关系的表中获取所有数据

来自分类Dev

oracle中如何通过比较两个表来查找记录

来自分类Dev

Rails:创建后关联两个记录

来自分类Dev

通过获取另外两个的ID来获得一条记录

来自分类Dev

如何使两个查询中的两个结果(具有相同的列)显示在单个查询表中

来自分类Dev

如何使两个查询中的两个结果(具有相同的列)显示在单个查询表中

来自分类Dev

两个Excel表-从表A删除表B上的所有记录

来自分类Dev

SQL查询两个通过一个表的条件获取多个表数据

Related 相关文章

  1. 1

    查询两个表中的所有记录

  2. 2

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

  3. 3

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

  4. 4

    连接两个表,但仅获取最新的关联记录

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

    yii2:无法从具有活动记录的两个表中获取数据

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

    从两个不同的表中选择所有记录

  14. 14

    两个表之间的Rails关联

  15. 15

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

  16. 16

    Rails活动记录关联:从多个表中获取数据

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

    如何从两个表中获取第三条中不存在的所有记录

  21. 21

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

  22. 22

    Grails中的SQL查询可从两个具有外键关系的表中获取所有数据

  23. 23

    oracle中如何通过比较两个表来查找记录

  24. 24

    Rails:创建后关联两个记录

  25. 25

    通过获取另外两个的ID来获得一条记录

  26. 26

    如何使两个查询中的两个结果(具有相同的列)显示在单个查询表中

  27. 27

    如何使两个查询中的两个结果(具有相同的列)显示在单个查询表中

  28. 28

    两个Excel表-从表A删除表B上的所有记录

  29. 29

    SQL查询两个通过一个表的条件获取多个表数据

热门标签

归档