sql >> データベース >  >> RDS >> PostgreSQL

性別男性のグループ内のすべてのユーザーをレールします

    ユーザーの性別がfemaleであるユーザーグループからこれらすべてのグループIDを取得できると思います NOT INで使用します これらのIDに一致するすべてのグループを除外するには、次の句を使用します。

    with users(id, gender) as (values (1, 'male'), (2, 'female')),
         groups(id, name) as (values (1, '1st'), (2, '2nd')),
         user_groups(id, user_id, group_id) as (values (1, 1, 1), (2, 2, 1), (3, 2, 1))
    select *
    from groups g
    where g.id not in (
        select ug.group_id
        from user_groups ug
        inner join users u on u.id = ug.user_id
        where u.gender = 'female'
    )
    

    ActiveRecordのバージョンは次のようになります:

    Group.where.not(
      id: UserGroup.joins(:user)
                   .where(users: { gender: 'female' })
                   .select(:group_id)
    )
    



    1. MySQLデータベース/テーブル/列がどの文字セットであるかを確認するにはどうすればよいですか?

    2. TEXTまたはVARCHARを使用するのに適したDATATYPEはどれですか?

    3. PostgreSQLはすべてのコンテンツを削除します

    4. ForeachまたはFor–それが問題です