复杂选择查询

时间:2012-06-27 10:56:02

标签: mysql database

我想要像fb新闻Feed这样的实现,我已经做了以下事情,但我不知道应该查询什么来检索那种数据

我有这些表

表:帖子 此表用于存储用户状态 post_id是AI和主要的 username是用户的用户标识 share是可见性控制,如果它是公开的,它可以共享给每个人,或者如果它与用户列表共享,则共享文件包含该列表的share_id。

+--------------+---------------+
| col_name     | col_type      |
+--------------|---------------+
| post_id      | INT(11)       |
+--------------|---------------+
| username     |  VARCHAR(50)  |
+--------------|---------------+
| share        |  VARCHAR(50)  |
+--------------|---------------+
| content      |  TEXT         |
+--------------|---------------+

表:分享 此表存储用户列表 share_id是AI和主要的 share_name是共享列表的名称。

+--------------+---------------+
| col_name     | col_type      |
+--------------|---------------+
| share_id     | INT(11)       |
+--------------|---------------+
| username     |  VARCHAR(50)  |
+--------------|---------------+
| share_name   |  VARCHAR(50)  |
+--------------|---------------+

表: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

0 个答案:

没有答案