0

次の状況を達成するためのクエリの作成方法を理解するのに少し苦労しています。ユーザーが自分のイベントと活動 (2 つの異なるテーブル) を、所属する組織のイベント/活動と共に日付順に並べ替えて表示できるようにしたい

イベント テーブル

eventID |  eventTitle   | eventBy   | eventDate
1           Event 1        1          2012/10/11
2           Event 2        2          2012/10/08
3           Event 3        3          2012/10/05

活動表

postID     |   postTitle  |  postBy  |    postDate
  1            activity 1       1          2012/10/07
  2            activity 2       2          2012/10/09   

orgMembers テーブル

orgID  |  userID
 2             1            //userID 1 is a member of groupID 2

とにかく、ユーザーID 1がページを表示している場合、結果を次のように表示しようとしています

 Title            By            Date
Activity 1        1          2012/10/07
Event 2           2          2012/10/08
Activity 2        2          2012/10/09
Event 1           1          2012/10/11

このクエリの結果、私の投稿のみが表示され、私がメンバーである組織も表示されません。

select eventTitle as title, eventID as ids, eventBy as byUser, users.username, eventDate as date from events
inner join users on users.userid = events.eventBy
where eventBy in (select distinct g1.userID from orgMembers g1
                 inner join orgMembers g2 on g1.orgID = g2.orgID
                 where g2.userID = '$id') 
                 or eventBy = '$id' 

UNION 

select postTitle as description, postID as ids, postBy as byUser, users.username, postDate as date from posts
inner join users on users.userid = posts.postBy
where postBy in (SELECT distinct g1.userID FROM orgMembers g1
                 inner join orgMembers g2 on g1.orgID = g2.orgID
                 where g2.userID = '$id') 
                 or postBy = '$id'

Order BY date"
4

2 に答える 2

1

使用して

WHERE eventby IN 

1 をユーザー ID に置き換えます

UNIONイベントとアクティビティを 2 つのテーブルから選択するために使用できます

(Ttile として eventInfo、By として eventBy、Eventby から Date として eventDate を選択 (SELECT userid FROM groups WHERE groupid = (SELECT groupid FROM groups WHERE userid = 1))) UNION (Ttile として activityInfo、By として activityInfo を選択、activityDate as Date from Activities where activityBy in (SELECT userid FROM groups WHERE groupid = (SELECT groupid FROM groups WHERE userid = 1))) Order BY Date

アクティビティと do ユニオンとソートで同じことを行います

于 2012-10-04T14:41:08.190 に答える