Итак, я пытаюсь разработать ленту действий для своего сайта,
В основном, если я UNION
соберу группу событий в ленту новостей, я получу что-то вроде следующего.
Крис теперь в друзьях у Марк
Крис теперь в друзьях у Дэйв
Что я хочу, так это более аккуратный способ группировки подобных сообщений, чтобы лента не давала информационной перегрузки ...
Например
Крис теперь дружит с Mark , Dave и 4 Others
Есть идеи о том, как я могу подойти к этому логически?
Я использую классический ASP на сервере SQL.
Вот оператор UNION
, который у меня есть ...
SELECT U.UserID As UserID, L.UN As UN,Left(U.UID,13) As ProfilePic,U.Fname + ' ' + U.Sname As FullName, 'said ' + WP.Post AS Activity, WP.Ctime
FROM Users AS U LEFT JOIN Logins L ON L.userID = U.UserID LEFT OUTER JOIN
WallPosts AS WP ON WP.userID = U.userID WHERE WP.Ctime IS NOT NULL
UNION
SELECT U.UserID As UserID, L.UN As UN,Left(U.UID,13) As ProfilePic,U.Fname + ' ' + U.Sname As FullName, 'commented ' + C.Comment AS Activity, C.Ctime
FROM Users AS U LEFT JOIN Logins L ON L.userID = U.UserID LEFT OUTER JOIN
Comments AS C ON C.UserID = U.userID WHERE C.Ctime IS NOT NULL
UNION
SELECT U.UserID As UserID, L.UN As UN,Left(U.UID,13) As ProfilePic, U.Fname + ' ' + U.Sname As FullName, 'connected with <a href="/profile.asp?un='+(SELECT Logins.un FROM Logins WHERE Logins.userID = Cn.ToUserID)+'">' + (SELECT Users.Fname + ' ' + Users.Sname FROM Users WHERE userID = Cn.ToUserID) + '</a>' AS Activity, Cn.Ctime
FROM Users AS U LEFT JOIN Logins L ON L.userID = U.UserID LEFT OUTER JOIN
Connections AS Cn ON Cn.UserID = U.userID WHERE CN.Ctime IS NOT NULL