我的数据库结构为
User Table(user id, username, first name,last name)
Event Table(event id,event name, event date)
UserEvent(user id, event id)
我想知道所有参加过所有活动的用户的用户名
我的数据库结构为
User Table(user id, username, first name,last name)
Event Table(event id,event name, event date)
UserEvent(user id, event id)
我想知道所有参加过所有活动的用户的用户名
这是一种方法:选择与用户关联的不同事件 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) 计算具有不同事件 ID 的事件数
2)对于一个用户,计算其不同的事件,如果数量相同,则将其放入表中。
这应该够了吧
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