Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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/5/sql/87.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,我有一个博客,有两种类型的页面: 打开的页面-每个人都可以查看该页面 关闭页面-只有页面的追随者才能查看帖子 页面的跟随者可以是单个用户或一组用户。 一个组可以包含单个用户或一组用户 我如何查询我的数据库,以知道用户X是否可以查看帖子Y 我的数据库是MySql数据库,我有以下表: 1实体 id : type : time_created 1 1 ... 2 1 ... 3 2

我有一个博客,有两种类型的页面:

  • 打开的页面-每个人都可以查看该页面
  • 关闭页面-只有页面的追随者才能查看帖子
  • 页面的跟随者可以是单个用户或一组用户。 一个组可以包含单个用户或一组用户

    我如何查询我的数据库,以知道用户X是否可以查看帖子Y


    我的数据库是MySql数据库,我有以下表:

    1实体

      id : type : time_created
      1       1            ...
      2       1            ...
      3       2            ...
      4       2            ...
      5       3            ...
      6       3            ...
      7       4            ...
      8       4            ...
      9       3            ...
    
    2类

     id : value
      1   post
      2   user
      3   group
      4   page
    
    3页

     id : page_id : is_closed : title
      1         7   false       "mordi"
      1         8   true        "cool"
    
    4实体关系

      id : id_one : relationship : id_two
       1        1   "part_of"          7
       2        2   "part_of"          8
       3        3   "member_of"        5
       4         5  "member_of"        6
       5         6  "member_of"        9
       6         9  "follower_of"      8
    
    我需要找到实体id为3的用户可以查看实体id为2的帖子,因为3如果第5组的成员是6的成员,是6的成员,是9的成员,是第8页(封闭页面)的跟随者,帖子2是其中的一部分


    谢谢大家!

    我想你正在寻找递归的通用表表达式。如果你有MysQL 8.0+你可以使用递归CTE,否则谢谢你的回答!我使用的是MySQL 5.6,但您的参考资料是这个问题的一个非常简单的例子。。我有一个更复杂的查询,我想“但是你的参考是这个问题的一个非常简单的例子..我有一个更复杂的查询,我想”试着理解这个简单的例子,并扩展它,使它适用于你的问题。