3

departmentid を含む多くのフィールドを含むユーザー テーブルがあります。departmentid は単なる文字列です。各部門 ID は異なるユーザーを持つことができます。繰り返しなしでユーザー テーブルからすべての部門 ID を見つけることは可能ですか。

users テーブルからすべての departmentid を見つけようとしましたが、結果には departmentid の重複が含まれています。これを解決する方法。

前もって感謝します...

4

2 に答える 2

3

SQL

select distinct department_id from users

Ruby code

User.all.map(&:department_id).compact.uniq

also in rails 3

User.select('departement_id').uniq
于 2012-12-17T04:54:48.923 に答える
1

おそらくSQLクエリを使用して、dbエンジンが数学を処理し、ルビーオブジェクトの作成を回避できるようにすることをお勧めします。これがより高速なオプションです。

Department.where("id in (select distinct department_id from users)").all

レールの方法でやりたい場合でも、次のことができます。

Department.where(id: User.select("distinct department_id").map(&:department_id)).all

このコードの最後の行では、ユーザー属性の完全なマッピングの作成を回避していることに注意してください。これは、関心があるのは department_id だけであるためです。また、ID を収集して一意にするためにすべてのユーザー オブジェクトを調べることも回避しています。 select distinct を使用すると、データベース エンジンは繰り返しなしで単一の値を返します。

于 2012-12-17T05:06:37.720 に答える