私はデータベース構造を持っています
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)
すべてのイベントに参加したすべてのユーザーのユーザー名を知りたい
これを行う 1 つの方法は次のとおりです。ユーザーに関連付けられた個別のイベント 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