用于照片共享社交应用(如 Instagram)的 Mysql 查询字符串
Posted
技术标签:
【中文标题】用于照片共享社交应用(如 Instagram)的 Mysql 查询字符串【英文标题】:Mysql query string for photo sharing social app like Instagram 【发布时间】:2015-10-19 05:36:14 【问题描述】:我正在开发一个照片分享应用平台。该应用程序允许您发布照片,其他人可以喜欢或评价照片。用户可以互相关注并查看他们的“关注者”正在分享的照片,就像 instagram 一样。
#user_tbl
id | name | number
-------------------
1 | Dan | 0209
2 | Sam | 2854
3 | Dave | 8123
4 | Alex | 5600
#photo_tbl
id | userid | path
-------------------
1 | 3 | dave-dog.jpg
2 | 1 | dans-cat.png
3 | 4 | alex-bird.jpg
4 | 2 | sam-fish.jpg
#friendship_tbl
id | actor | target
--------------------
1 | 2 | 1 // Sam is following Sam
2 | 2 | 4 // Sam is following Alex
3 | 1 | 3 // Dan is following Dave
4 | 4 | 2 // Alex is following Sam
#activities_stream_tbl
id | photoid | userid | context | date
----------------------------------------------------------
1 | 3 | 4 | add-new-photo | 10/10/2015
2 | 1 | 3 | add-new-photo | 12/10/2015
3 | 3 | 2 | Sam-share-Alex-photo | 15/10/2015
4 | 4 | 2 | add-new-photo | 20/10/2015
6 | 1 | 1 | Dan-like-Dave-photo | 21/10/2015
#user_table 保存用户的基本信息,而#photo_tbl
保存用户共享照片的名称和路径。其中#friendship_tbl
是用户之间的关系链接。 "actor"
列是执行以下操作的用户的 ID,而 "target"
列是被关注的用户的 ID。
我目前在编写查询字符串以提取USERX
的照片和其他用户USERX
的照片时遇到问题,并在activity_stream_tbl 中按“photoid”对它们进行分组,并按“日期”activity_stream_tbl 排序。
如果有人可以帮助我,我会很高兴,告诉我一个更好的构建数据库的方法,谢谢。
【问题讨论】:
【参考方案1】:要拉取 USERX 的照片,你可以像这样构造你的 sql
select PATH
from user_tbl as a inner join photo_tbl as b
on a.id = b.user_id
and a.name = 'userx'
为了拉取USERX关注的其他用户的照片,你可以写
select path
from photo_tbl as a
where a.userid in (select target from friendship_tbl as x inner join user_tbl as y on x.actor = y.id and y.name = 'user')
您可以根据需要合并以上两个结果。
例如:
select PATH
from user_tbl as a inner join photo_tbl as b
on a.id = b.user_id
and a.name = 'userx'
UNION
select path
from photo_tbl as a
where a.userid in (select target
from friendship_tbl as x
inner join user_tbl as y
on x.actor = y.id and y.name = 'user')
【讨论】:
谢谢@PK20,我怎样才能把这两个查询放到一个查询字符串中。以上是关于用于照片共享社交应用(如 Instagram)的 Mysql 查询字符串的主要内容,如果未能解决你的问题,请参考以下文章