0

tableno、itmname、itmtypeの3つの列を持つテーブルがあります。itmtype は赤または青のみです。このテーブルには次のような行が含まれる場合があります: table01,item1,red ; table01、item2、青; table02、item1、青; table02、item4、赤; table03、item1、赤; table03、item5、赤。ここで、すべての itmtypes が赤の tableno を抽出する必要があります。したがって、上記の行から、 itmtype がその中の両方のアイテムに対して赤であるため、table03 として出力する必要があります。通常、itmtype の where 条件を red として配置すると、table01 と table02 も取得される可能性があります。両方とも itmtype red の項目が 1 つあるためです。しかし、このテーブルのすべての itmtype が赤で出力されるため、table03 だけが必要です。

レールでさまざまな種類のクエリを作成するのにかなり長い間苦労していますが、どれも機能していません。

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)

これをレールで変換できないため、レールコンソールでテストして動作するかどうかを確認できませんでした。これは基本的な質問に聞こえるかもしれませんが、レールに慣れていないので、通常の選択しか使用していません。お知らせ下さい。ありがとう。

4

1 に答える 1

4

SQL構文が正しい場合は、それを文字列に入れて、Model.find_by_sql("your query")のようなfind_by_sqlメソッドを使用して、リンクを確認してください

Rails 3 の配列形式のhttp://apidock.com/rails/ActiveRecord/Base/find_by_sql/class find_by_sql

于 2013-09-12T05:32:10.083 に答える