在SQL中分割选择不起作用

时间:2013-05-11 18:37:04

标签: sql oracle select

你可以用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)) 

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

感谢您的帮助。

1 个答案:

答案 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)