用户表 user
id | name | cover |
---|---|---|
1 | 昵称 | 头像 |
2 | 昵称 | 头像 |
作品表 project
id | content | pic | uid |
---|---|---|---|
1 | 内容 | 封面图 | 用户id |
2 | 内容 | 封面图 | 用户id |
即刻表 jike
id | content | pic | uid |
---|---|---|---|
1 | 内容 | 封面图 | 用户id |
2 | 内容 | 封面图 | 用户id |
作品评论表 project_comment
id | content | pid | uid |
---|---|---|---|
1 | 内容 | 对应用户project表id | 用户id |
| 2 | 内容 | 对应用户project表id| 用户id |
即刻评论表 jike_comment
id | content | pid | uid |
---|---|---|---|
1 | 内容 | 对应用户jike表id | 用户id |
2 | 内容 | 对应用户jike表id | 用户id |
作品点赞表project_like
id | pid | uid | dateline |
---|---|---|---|
1 | 对应用户project表id | 用户id | 时间 |
2 | 对应用户project表id | 用户id | 时间 |
即刻点赞表jike_like
id | pid | uid | dateline |
---|---|---|---|
1 | 对应用户jike表id | 用户id | 时间 |
2 | 对应用户jike表id | 用户id | 时间 |
作品评论点赞表project_comment_like
id | pcid | uid | dateline |
---|---|---|---|
1 | 对应用户project_comment表id | 用户id | 时间 |
2 | 对应用户project_comment表id | 用户id | 时间 |
即刻评论点赞表jike_comment_like
id | pcid | uid | dateline |
---|---|---|---|
1 | 对应用户jike_comment表id | 用户id | 时间 |
2 | 对应用户jike_comment表id | 用户id | 时间 |
需求:作品即刻混合列表,作品即刻不重复
条件:我的作品、我的即刻、我评论的作品,我评论的即刻
排序:赞我的作品时间、赞我的即刻时间、赞我评论作品的时间、赞我评论的即刻时间,按时间倒序
内容:
1、封面图,作品id;即我被赞过的作品、即刻 和我被赞过的评论 对应的作品、即刻 封面图、id;
2、每条列表需要赞过我的人数;即我的作品、或即刻、或我的作品评论或我的即刻评论的人数
3、赞过我此条(作品、或即刻、或作品评论、或即刻评论)信息的至做10个人的头像、昵称
4、区分此条信息是我的作品、我的即刻、我评论的作品、我评论的即刻
原sql 语句:
select * from (
(select l.id,l.pid,l.dateline,l.uid,0 as jike,0 as is_comment,0 as commentid from project_like l left join project p on l.pid=p.id where p.uid={$uid} order by l.dateline desc)
union all
(select sl.id,sl.sid,sl.dateline,sl.uid,1 as jike,0 as is_comment,0 as commentid from single_like sl left join single s on sl.sid = s.id where s.uid={$uid} order by sl.dateline desc)
union all (
select pcl.id,pc.pid,pcl.dateline,pcl.uid,0 as jike,1 as is_comment,pcl.pid as commentid from project_comment_like pcl left join project_comment pc on pcl.pcid as commentid = pc.id where pc.uid={$uid} order by pcl.dateline desc)
union all
(select scl.id,sc.pid,scl.dateline,scl.uid,1 as jike,1 as is_comment,scl.pid as commentid from single_comment_like scl left join single_comment sc on scl.pcid = sc.id where sc.uid={$uid} order by scl.dateline desc)) a order by dateline desc limit 0,50;
查完后再循环查找每条点赞的总人数,和最多10点赞的人的信息;
求高手优化
直接单表操作利用mysql缓存加快查询也能狗使得逻辑清晰,在代码层上操作