質問編集履歴

1

GOROGORO

GOROGORO score 71

2016/04/18 22:56  投稿

RailsでArel::Tableを利用しての副問い合わせ記述について
Rails4.1においてArel::Tableを利用して以下のようなSQLを作成しようとしています。
```SQL
select id
  from hoge
     where id in
    (select id
           from hoge
           where 集合Aの条件)
     and 集合Bの条件)
group_by colA
```
以下で実現できるのかとやってみています。
```Ruby
result=Hoge.select("colA").where(条件式A)
.where(Hoge.arel_table[:colA].in(
  Hoge.select("colA")
   .where(Hoge.arel_table[:colB].in(条件式))
  .group(ColA).as("basic_daily_stock_infos_exec")
```
ですが
```Ruby
result.first
```
で結果が
"colA"
と列名そのものが表示されてしまいます。
(colAはint型です。)
何が起こっているのかすら理解できていないのですが、
上記のようなSQLをRailsで記述するにはどのようにすればよいでしょうか?
よろしくお願いします。
  • Ruby

    16332 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    17609 questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Active Record

    477 questions

    Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る