我有數據庫結構選擇誰參加了所有選舉的所有用戶
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)
我想知道是誰參加了所有事件
這應該做的伎倆
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
下面是做這件事的所有用戶的用戶名:選擇與該用戶關聯的不同事件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)對於用戶數,計數其不同的事件和如果該號碼是相同的,把它在表。
選擇所有用戶參與的所有事件 選擇u.id,u.username FROM AUTH_USER U, (SELECT COUNT(ID)AS EVENT_COUNT FROM SecureVirtualElection_event)爲E INNER JOIN( SELECT u_id_id,COUNT(e_id_id)AS EVENT_COUNT FROM SecureVirtualElection_userrequestpool GROUP BY u_id_id )AS UE WHERE E.EVENT_COUNT = UE.EVENT_COUNT AND u.id = UE.u_id_id; – user1003121