2013-04-10 31 views
0

我有一個包含4列標識,用戶,文本和日期的表。獲取包含用戶標識的表的行

我想獲取「用戶」包含許多用戶ID之一的行。在那裏可以有一個到無限用戶標識。用戶ID的「用戶」列

"4, 5, 23" 

"4, 12, 44" 

基本上我想做一個狀態更新系統,其中只有用戶的好友可以看到狀態更新

例,有點像Facebook和Twitter。

+0

'其中userid IN(你的,數字,這裏)' – crush 2013-04-10 15:09:28

+0

不是開玩笑吧我 – samayo 2013-04-10 15:09:42

+0

你的意思是'id'列包含了一組ID的,還有'user'列?或者'id'列是否包含唯一的id? – Sebas 2013-04-10 15:12:06

回答

5

您不應該有一列存儲多個用戶ID。製作一張表並參考它,然後查找將變得簡單。

+0

可能比SET查找快得多。特別是如果這些集合可能相當大或很複雜。 – crush 2013-04-10 15:10:39

+0

是的,「一到無限」聽起來足夠複雜! :P – 2013-04-10 15:11:11

+0

這是真的正確,應該upvoted,不幸的是,這不是一個答案:-) – Sebas 2013-04-10 15:11:26

1

如果我正確理解你的問題,你想把它分成多個表。

一個ID,用戶ID,文本和日期的狀態表。

帶有用戶名,用戶名等的用戶表(取決於您)。

與id,userid,friendid的友誼表。 (友誼的兩個條目,你可以做朋友1和朋友2,但這意味着每個查詢的雙方都要檢查兩個字段)。

最後一張桌子是基於友誼的需要是兩種方式!所以facebook的公約與twitter不同,後面可能沒有後面的約定。

然後,您將顯示您(作爲登錄用戶)與之有友誼的用戶的更新。

SELECT s.text,s.date,u.username,s.userid FROM狀態的內在JOIN用戶名U ON s.userid = u.id INNER JOIN友誼F於f.friendid = s.userid WHERE '用戶ID登錄's.date DESC LIMIT 10

更改LOGGED IN USER ID到當前登錄用戶的用戶ID。這通常使用會話變量進行設置。

LIMIT 10將顯示最新的10個狀態更新!

然後顯示文本和日期以及用戶名與鏈接到他們的個人資料的用戶名(如果適用)!