我有教练,我有球队,我有赞助商。
教练可以有很多团队。团队可以有很多赞助商 赞助商有 1 个注册方法
我很难找到所有没有赞助商的球队的教练,他们的注册方法设置为“电子邮件”(我知道......它很粗糙)
我的 sudo 代码是:
查找所有拥有赞助商但未将注册方法设置为“电子邮件”的球队的教练
我在这里用 psql 进行了可怕的尝试,到目前为止还没有运气。
SELECT users.*
FROM users
WHERE (users.roles @> '{coach}')"
AND WHERE (users.teams.sponsors.registration_method != '{email}')
我对 SQL 查询的了解很薄弱(正如您所知道的),而且我一直在苦苦挣扎。有人会知道如何提供帮助吗?
我完全在猜测你的表结构,所以如果你能澄清这将是一个很大的帮助。从理论上讲,假设您有一个用户表、团队、赞助商和注册方法,这样的查询应该会产生所有教练,但这些教练的赞助商至少没有一个注册方法是电子邮件:
select
u.*
from
users u
where
u.role @> array['coach'] and
not exists (
select null
from
teams t
join sponsors s on < whatever >
join registration_methods r on < whatever >
where
u.user_id = t.coach_id and
r.registration_method = 'email'
)
关键是半连接 ( not exists
),它将产生与描述的条件不匹配的所有内容。
如果正如您的问题所暗示的那样,都是一张大桌子(带有数组),那么这就是一匹不同颜色的马。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句