【问题标题】:display status from user who i follow显示我关注的用户的状态
【发布时间】:2012-05-11 20:59:14
【问题描述】:

我想问,我真的很需要答案。

这里我在一个数据库中有 3 个表。

1 # 个用户 - id_user (int) - 用户名(文本)

2 # 状态更新 - id_status (int) - id_user (int) - 用户名(文本) - 状态(文本)

3 # 关注 - id_user (int) - id_user_follow (int) - 用户名(文本) - username_follow (文本)

问题是,如何显示我关注的用户的状态..而不显示我未关注的用户的状态。 ?? .. 使用php和mysql,求帮助。

新问题

对不起,我还是不明白,这是我真正的桌子

请帮忙,我还是不明白[我以前的帖子][1]中的答案,这里我有3个表。

1#简介 - id_user - 用户名 - 电子邮件 2#图片 - id_picture - id_user - 标题 3 # 订阅 - id_user_a - Id_user_b(在 user_a 订阅的人) - 日期

现在的问题是,如何在只订阅的人中显示标题图片,而不在未订阅的人中显示标题图片,

【问题讨论】:

  • 了解SQL joins
  • “status_update”表中不需要用户名。此外,“follow”表中不需要 username 和 username_follow 。我知道这不能回答你的问题,但你应该在做任何其他事情之前解决这个问题。

标签: php mysql


【解决方案1】:

首先你应该修复你的数据库结构。这是我的建议:

users - id (int), username (varchar)
status_updates - id (int), users_id (int), status (text)
follow - users_id, following_users_id

请注意,您不应将用户名保存在每个表中,仅将其保存在users 表中。另外,用户名应该是varchar 类型。

这是您在固定数据库中的查询:

SELECT u.username, s.status
FROM users u
LEFT JOIN follow f ON u.id = f.following_users_id
LEFT JOIN status_updates s ON u.id = s.user_id
WHERE f.user_id = USER_ID

【讨论】:

  • 如何从新状态到旧状态排序??
  • 如果您没有状态日期,您应该在查询末尾添加ORDER BY s.id DESC。请注意,s.id 应该是 AUTO_INCREMENT
  • hmm sorru 但该代码仅显示我的以下更新而我自己的更新未显示,请再次帮助我:)
【解决方案2】:
SELECT u.username, s.status 
FROM users u 
LEFT JOIN follow f ON (u.id_user = f.id_user_follow) 
LEFT JOIN status_update s ON (u.id = s.user_id) 
WHERE f.id_user = USER_ID;

您应该考虑规范化您的表,您不需要在每个表中复制用户名。

【讨论】:

    【解决方案3】:

    SQL:SELECT status FORM status_update AS s LEFT JOIN follow AS f ON s.id_user = f.id_user_follow WHERE f.id_user = 'YOUR_ID' LIMIT 0,5

    与 PHP 相比,这取决于您是否已经连接到 Db。 作为草稿,你可以从var_dump($query->result());开始

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2022-01-11
      相关资源
      最近更新 更多