我想像 fb 新闻提要那样实现,我已经做了以下事情,但我不知道应该用什么查询来检索那种数据
我有这些桌子
TABLE : posts 此表用于存储用户状态 post_id 是 AI,主用户名是用户的用户 ID 共享是可见性控制,如果它是公开的,它可以共享给所有人,或者如果它与用户列表共享,则共享字段包含该列表的 share_id .
+--------------+---------------+
| col_name | col_type |
+--------------|---------------+
| post_id | INT(11) |
+--------------|---------------+
| username | VARCHAR(50) |
+--------------|---------------+
| share | VARCHAR(50) |
+--------------|---------------+
| content | TEXT |
+--------------|---------------+
TABLE : share 此表存储用户 share_id 为 AI 的列表,主 share_name 为共享列表的名称。
+--------------+---------------+
| col_name | col_type |
+--------------|---------------+
| share_id | INT(11) |
+--------------|---------------+
| username | VARCHAR(50) |
+--------------|---------------+
| share_name | VARCHAR(50) |
+--------------|---------------+
TABLE : share_member
该表是share
存储共享成员列表的子表。
+--------------+---------------+
| col_name | col_type |
+--------------|---------------+
| smid | INT(11) |
+--------------|---------------+
| share_id | IMT(11) |
+--------------|---------------+
| username | VARCHAR(50) |
+--------------|---------------+
我想获取所有允许我看到的用户的数据。包括公开。
编辑:
我在表格帖子中又添加了一列
然后尝试了这个查询
SELECT p.*, CASE p.share_type when 'public' then "1" when 'list' then if((select count(*) FROM share_member WHERE username='pratik' AND share_id=share)>="1") then "1" END AS allowed FROM posts p