2

我的数据库结构为

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

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

UserEvent(user id, event id)

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

4

3 回答 3

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)
于 2012-05-18T04:43:56.243 回答
0

一个想法 :

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

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

于 2012-05-18T04:47:04.250 回答
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
于 2012-05-18T04:50:16.960 回答