你可以用SQL中的除法选择来帮助我吗?我使用Oracle Apex Express Edition。我有三张桌子。英文(原始名称在括号中):用户(Uzivatel),事件(Udalost)和用户组(Skupina_u)。他们的背景是在屏幕上:
现在我必须在SQL中使用divide select。制定此选择:您必须显示所有活动的所有用户。在我的表中,您可以看到我有两个用户,他们参加了所有活动。他们是“SK2”组的一部分。我正在使用这个选择:
select *
from Uzivatel
where not exists (select *
from Skupina_u
where not exists (select *
from Udalost
where Skupina_u.ID_uz = Uzivatel.ID_uz
and Skupina_u.ID_uz = Udalost.ID_uz))
但结果是:没有找到数据。
感谢您的帮助。
答案 0 :(得分:3)
这是回答你用英语提出的问题。 。 。 “查找所有活动中的所有用户。”
这是set-within-sets查询的示例。我认为最好的方法是使用聚合(因为相同的结构可以用于许多问题)。让我告诉你使用表格和列的英文名称:
select eu.UserId
from User_Events eu
group by eu.UserId
having count(distinct eu.EventId) = (select count(*) from Events e)
即,选择所有用户,其中不同事件ID的数量是事件表中的数字。如果您只想要拥有用户的事件,请使用以下having
子句:
having count(distinct eu.EventId) = select count(distinct eventId) from Events e)