0

我有一个包含 4 列 id、用户、文本和日期的表。

我正在尝试获取“用户”包含许多用户 ID 之一的行。那里可以有一个到无穷大的用户 ID。

用户 ID 示例

"4, 5, 23"

“用户”列示例

"4, 12, 44"

基本上我正在尝试制作一个状态更新系统,只有用户的朋友才能看到状态更新,有点像 facebook 和 twitter。

4

2 回答 2

5

您不应该有一个列来存储多个用户 ID。制作一个表格并参考它,然后查找将很简单。

于 2013-04-10T15:09:34.873 回答
1

如果我正确理解你的问题,你想把它分成多个表。

带有 id、userid、文本和日期的状态表。

带有 id、用户名等的用户表(由您决定)。

一个带有 id、userid、friendid 的友谊表。(友谊的两个条目,你可以做friend1和friend2,但这意味着每个查询都要检查两个字段)。

最后一张表是根据友谊的需要做的两种方式!因此,与 twitter 相对的 facebook 约定遵循但可能没有遵循的约定。

然后,您将显示您(作为登录用户)与之有友谊的用户的更新。

SELECT s.text, s.date, u.username, s.userid FROM status s INNER JOIN username u ON s.userid = u.id INNER JOIN Friendship f ON f.friendid = s.userid WHERE f.userid = 'LOGGED IN USER ID' ORDER BY s.date DESC LIMIT 10

将 LOGGED IN USER ID 更改为当前登录用户的用户 ID。这通常使用会话变量来设置。

LIMIT 10显示最新的 10 个状态更新!

然后显示文本和日期以及带有链接到其个人资料的用户 ID 的用户名(如果适用)!

于 2013-04-10T15:31:28.263 回答