PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Rails tất cả người dùng trong một nhóm có giới tính nam

Tôi nghĩ bạn có thể lấy tất cả id nhóm đó từ các nhóm người dùng có giới tính người dùng là female và sử dụng chúng với NOT IN , để lọc ra tất cả các nhóm phù hợp với các 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'
)

Phiên bản ActiveRecord có thể trông giống như sau:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để sao chép cấu trúc của bảng này sang bảng khác với các ràng buộc khóa ngoại trong psql?

  2. NGHE hết thời gian chờ truy vấn với node-postgres?

  3. Các khóa ngoại JSON trong PostgreSQL

  4. Mệnh đề KIỂM TRA cho các chế độ xem có thể cập nhật

  5. psql.exe - xác thực mật khẩu không thành công trong Windows