Posted at

【Rails】category_id = 1 の sub_category を持つ items を取得したい。(サブクエリ)

More than 1 year has passed since last update.

category_id = 1 の sub_category を持つ items を取得したい。

:point_down: SQL


SQL

-- サブクエリ(副問合せ)を使います。

SELECT * FROM items WHERE sub_category_id IN
(SELECT * FROM sub_categories WHERE category_id = 1);

:point_down: Rails


Rails

sub_categories = SubCategory.where(category_id: 1)

@items = Item.where(sub_category: sub_categories)

# => #<ActiveRecord::Relation [#<Item id: 1, name: "apple juice", sub_category_id: 1>, #<Item id: 2, name: "orange juice", sub_category_id: 1>, #<Item id: 3, name: "coca cola", sub_category_id: 2>, ...]>


.where(category_id: 1) のところは、.where(category: @category) でもOK。

これでできました。:thumbsup:

まさか.where()でActiveRecordの問合せ結果を渡すことができるとは知らなかったですね...

かなり基礎的なことですが、Rails/SQL初心者の自分は、これを探し出すのに地味に苦労しました。

これが誰かのお役立てできれば幸いです。