我的数据库结构为
User Table(user id, username, first name,last name)
Event Table(event id,event name, event date)
UserEvent(user id, event id)
我想知道参与所有活动的所有用户的用户名
答案 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