在rails中连接两个具有多个条件的表

时间:2013-08-02 11:31:18

标签: mysql ruby-on-rails ruby

我有两个名为linesattribute_values的表。从那里我想从name表中选择字段lines,其条件在下面的MySQL查询中给出:

select distinct a.name 
from lines a join attribute_values b 
where a.advertiser_id = 280 
  and a.id = b.line_id 
  and b.name in (11, 18) 
  and b.value != 0;

如何使用Ruby代码编写此查询?

3 个答案:

答案 0 :(得分:0)

假设 行has_many attribute_values

试试这个

Line.joins(:attribute_values).select("DISTINCT(lines.name)").where("lines.advertiser_id = ? AND attribute_values.name IN (?) AND attribute_values.value != ?", 280, [11,18], 0)

答案 1 :(得分:0)

要获得不同的价值,您必须应用uniq

Lines.joins(:attribute_values).where('lines.advertiser_id = ? AND attribute_values.name in ? AND attribute_values.value <> ?', 280, [11, 18], 0).uniq

答案 2 :(得分:0)

Line.joins("a LEFT JOIN attribute_values b ON a.id = b.line_id").select("DISTINCT(a.name)").where("b.value != ? AND b.name in (?) AND a.advertiser_id = ?", 0, [11, 18], 280)