2014-09-20 106 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表格中的項目。