Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mySQL数据库结构来表示一个用户接着另一个用户?_Mysql_Sql_Database - Fatal编程技术网

mySQL数据库结构来表示一个用户接着另一个用户?

mySQL数据库结构来表示一个用户接着另一个用户?,mysql,sql,database,Mysql,Sql,Database,基本上,我正在尝试使用多个用户制作一个程序,其中每个用户发布自己的图片,同时允许用户跟随另一个用户并查看该用户的文章 我有以下数据库: 用户(用户id) 图片(标题) 发布人(用户id,\u标题) 及 追随者(用户id,追随者id) 现在,我正在尝试编写一个SQL来检索两个方面的内容:由登录用户发布的文章,以及由登录用户遵循的用户发布的文章 我编写的SQL是: "SELECT * FROM pictures NATURAL JOIN users NATURAL JOIN posted_by NA

基本上,我正在尝试使用多个用户制作一个程序,其中每个用户发布自己的图片,同时允许用户跟随另一个用户并查看该用户的文章

我有以下数据库:

用户(用户id

图片(标题

发布人(用户id\u标题

追随者(用户id追随者id

现在,我正在尝试编写一个SQL来检索两个方面的内容:由登录用户发布的文章,以及由登录用户遵循的用户发布的文章

我编写的SQL是:

"SELECT * FROM pictures NATURAL JOIN users NATURAL JOIN posted_by NATURAL JOIN followers WHERE user-id = '" . $user-id . "' OR follower-id = '" . $user-id . "'";
现在,这个问题在于

WHERE user-id = '" . $user-id
这部分没有返回正确答案,因为followers表中的用户id实际上并不表示该用户的id,而是表示该用户跟随的人的用户id


问题是:如何重新构造followers表,以便follower用户id和followee用户id都由用户表中的不同用户表示,这样,我就可以在一次查询中获得所需的图片了?

我认为设计此查询的最佳方法是使用名为
post
的表作为表
picture
article
的父表(picture和article具有要发布的外键)。将公共字段放在post表中(如用户id或日期),您可以使用它在一个非常简单的SQL中选择和排序所有您想要的帖子。

考虑到您现有的结构

此查询将为您提供所需的输出

select pst.userid, pic.title
    from pictures pic
      inner join posted_by pst on pic.title = pst.title
      left join followers flw on pst.userid = flw.userid
where pst.userid = <userid> or flw.followerid = <userid>
选择pst.userid,pic.title
来自图片
pst在pic.title=pst.title上发布的内部联接
pst.userid=flw.userid上的左加入追随者flw
其中pst.userid=或flw.followerid=

您可以选中“使用联合”:一个子查询返回用户发布的图片,另一个子查询返回其追随者发布的图片。