PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Насочва всички потребители в група с пол мъжки

Мисля, че можете да получите всички тези идентификатори на групи от потребителските групи, където полът на потребителя е female и ги използвайте с NOT IN клауза, за да филтрирате всички тези групи, съответстващи на тези идентификатори:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres не използва индекс на целочислен масив, ако е инсталирано разширение intarray

  2. Как да използвам изхода на заявката за избор като вход в заявката за вмъкване?

  3. Как да дефинирам псевдоним на оператор в PostgreSQL?

  4. db.create_all() Обектът „NoneType“ няма атрибут „име на драйвер“

  5. Postgres:обобщете колона в масив