PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Rel semua pengguna dalam grup dengan jenis kelamin laki-laki

Saya pikir Anda bisa mendapatkan semua id grup itu dari grup pengguna di mana jenis kelamin pengguna adalah female dan gunakan dengan NOT IN klausa, untuk memfilter semua grup yang cocok dengan id tersebut:

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'
)

Versi ActiveRecord mungkin terlihat seperti ini:

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. Bagaimana cara memecahkan kode hex kolom byte PostgreSQL ke int16/uint16 di r?

  2. Cara memisahkan teks menggunakan substring

  3. PG::UndefinedTable:ERROR:relasi tidak ada dengan penamaan dan konvensi Rails yang benar

  4. Permintaan untuk memeriksa status basis data postgresql

  5. Mengekstrak nilai tag xml di PostgreSQL