facebook类型墙贴文字

时间:2013-07-24 17:12:05

标签: php mysql

我有两个mysql表members_tbl和post_tbl

members_tbl:

id | userName | fname | lname | friendArray

post_tbl:

帖子ID |记住| thePost | postDate

现在,我正在尝试显示来自用户ID和来自他的friendArray的帖子。 请让我知道怎么做(仍然是php的新手)

2 个答案:

答案 0 :(得分:0)

为您的朋友关系创建一个不同的表,然后在SQL中加入此表。

答案 1 :(得分:0)

由于MySQL缺少explode函数,您需要创建关系表并使用连接,或者在中间使用php处理多个查询。我强烈推荐关系方法,因为它符合数据库标准(规范化),而不是替代方案,并且更容易实现。

你需要第三张表,它描述了两个朋友之间的关系,I.E。

friends_tbl
user1_id | user2_id

使用user1_iduser2_id上的主键(从而防止重复)。对于每一个朋友关系,I.E。用户1是用户2的朋友,该表中有一行。然后,您可以使用以下查询获取所需的列表。

SELECT p.*, u.*
FROM posts_tbl p
INNER JOIN members_tbl u
  ON u.id = p.memId
WHERE u.id IN (
  SELECT user2_id AS id
  FROM friends_tbl
  INNER JOIN members_tbl
  ON (user1_id = id)
  WHERE members_tbl.id = $id

  UNION

  SELECT user1_id AS id
  FROM friends_tbl
  INNER JOIN members_tbl
  ON (user2_id = id)
  WHERE members_tbl.id = $id
)
ORDER BY p.postDate

SQLFiddle上述内容。