2014-09-20 105 views
-3

我有一个简单的MySQL数据库表,称它为X.用户通过PHP与X进行交互。简单的东西。现在我希望我允许每个用户在X中标记特定的“行”,以便在将来搜索X时不会出现。SQL筛选结果由用户

Ex。显示每个用户,比如1到10行。用户A不希望看到第4,8,9行。但用户B,Q和Z爱这些行,没有它们就无法生活。哦,我们不能忘记用户D谁恨每一行,但2。等等...

我应该怎么做呢?

更新:

我应该注意的是:我知道我可以创建另一个表与所有的人不愿行,但什么是设计表(一个或多个),以支持的最佳方式越来越多的数字或用户和数据行?

+0

如果用户不想要行4,8,9 - 您应该允许用户能够删除不需要的行并将该选项写入数据库。因此,下次您查询时,您只会显示用户请求的内容。 – 2014-09-20 01:56:35

回答

0

您需要一张名为X_blacklist的表格。它会有两列:useridpostid。这两列一起是复合主键。

对于userid标识的用户隐藏postid标识的帖子,她将该行插入X_blacklist。然后,当您显示来自X项目给你的用户,你这样做:

SELECT X.postid, X.postcontent 
    FROM X 
    LEFT JOIN X_blacklist ON X.postid = X_blacklist.postid AND X_blacklist.userid = ? 
    WHERE X_blacklist.postid IS NULL 

这就消除了在其他表中提到的特定用户的X表格中的项目。