用于照片共享社交应用(如 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 查询字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 上整合社交媒体进行照片分享?

oppo+reno6图片怎么分享?

ffmpeg 命令创建可共享到 Instagram 等的 mp4 视频

像Instagram这样的照片效果[关闭]

从零打造 Instagram

与 Instagram、Facebook 共享相机胶卷中的图像