0

我有 3 列的表:tableno、itmname、itmtype。itmtype 只能是红色或蓝色。该表可能有如下行: table01,item1,red ; table01,item2,蓝色;table02,item1,蓝色;表 02,第 4 项,红色;table03,item1,红色;表 03,第 5 项,红色。现在我需要提取所有 itmtypes 都是红色的 tableno。因此,从上面的行中,我需要输出为 table03,因为其中的两个项目的 itmtype 都是红色的。通常,如果我将 itmtype 的 where 条件设置为红色,它可能会获取 table01 和 table02 以及因为两者都有一个带有 itmtype 红色的项目。但我只需要 table03 因为我的输出因为这个表的所有 itmtype 都是红色的。

我在 Rails 中编写不同类型的查询已经苦苦挣扎了很长时间,但它们都不起作用。

我已经为无法在 rails 中编写类似的查询编写了一个 sql 查询。

select tableno,itmstatus,count(itmstatus) from lists l1 group by l1.tableno,itmstatus
having itmstatus = 'red' and count(itmstatus) = (select count(itmstatus) from lists l2  where l1.tableno = l2.tableno group by tableno)

由于我无法在 Rails 中进行转换,因此无法在 Rails 控制台上进行测试以检查它是否可以工作。我知道这听起来可能是一个基本问题,但是对于 Rails 新手,我只使用了普通选择。请指教。谢谢。

4

1 回答 1

4

如果您有正确的 sql 语法,则将其放入字符串中并使用 find_by_sql 方法,如 Model.find_by_sql("your query") 请检查链接

http://apidock.com/rails/ActiveRecord/Base/find_by_sql/class find_by_sql 在 Rails 3 中使用数组格式

于 2013-09-12T05:32:10.083 回答