0

你能帮我解决 SQL 中的除法选择吗?我使用 Oracle Apex Express 版。我有三张桌子。英文(原始名称在括号中):用户 (Uzivatel)、事件 (Udalost) 和用户组 (Skupina_u)。他们的上下文在屏幕上:

现在我必须在 SQL 中使用除法选择。此选择是制定的:您必须显示参加所有活动的所有用户。在我的表格中,您可以看到我有两个用户,他们参加了所有活动。他们是“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)) 

但结果是:没有找到数据。

谢谢你的帮助。

4

1 回答 1

3

这是在回答你用英语提出的问题。. . “查找参加所有活动的所有用户。”

这是集合内集合查询的示例。我认为最好的方法是使用聚合(因为相同的结构可以用于许多问题)。让我向您展示使用表和列的英文名称:

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)
于 2013-05-11T19:12:10.963 回答