选择参与所有选举的所有用户

时间:2012-05-18 04:40:16

标签: sql

我的数据库结构为

User Table(user id, username, first name,last name)

Event Table(event id,event name, event date)

UserEvent(user id, event id)

我想知道参与所有活动的所有用户的用户名

3 个答案:

答案 0 :(得分:2)

以下是一种方法:选择与用户关联的不同事件ID的数量以及那里的事件ID总数。

select *
from User u
where (
    select count(*) from (
        select distinct ue.EventId
        from UserEvent ue
        where ue.UserId=u.UserId
    )
) = (select count(*) from Event)

答案 1 :(得分:0)

一个想法:

1)计算具有不同事件ID的事件数

2)对于用户,计算其不同的事件,如果数量相同,则将其放入表中。

答案 2 :(得分:0)

应该做的伎俩

    SELECT u.id as user_id, u.username
FROM USER U,
(
        SELECT COUNT(EVENT_ID) AS EVENT_COUNT
        FROM EVENT
        ) AS E
    INNER JOIN (
        SELECT UDSER_ID, COUNT(EVENT_ID) AS EVENT_COUNT
        FROM USEREVENT
        GROUP BY USER_ID
        ) AS UE ON U.USER_ID = UE.USER_ID
WHERE E.EVENT_COUNT = UE.EVENT_COUNT