departmentid を含む多くのフィールドを含むユーザー テーブルがあります。departmentid は単なる文字列です。各部門 ID は異なるユーザーを持つことができます。繰り返しなしでユーザー テーブルからすべての部門 ID を見つけることは可能ですか。
users テーブルからすべての departmentid を見つけようとしましたが、結果には departmentid の重複が含まれています。これを解決する方法。
前もって感謝します...
departmentid を含む多くのフィールドを含むユーザー テーブルがあります。departmentid は単なる文字列です。各部門 ID は異なるユーザーを持つことができます。繰り返しなしでユーザー テーブルからすべての部門 ID を見つけることは可能ですか。
users テーブルからすべての departmentid を見つけようとしましたが、結果には departmentid の重複が含まれています。これを解決する方法。
前もって感謝します...
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
おそらく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 を使用すると、データベース エンジンは繰り返しなしで単一の値を返します。