【问题标题】:One record 27 times一项记录 27 次
【发布时间】:2013-07-20 13:36:32
【问题描述】:

我对 MySQL 有一个大问题。我想编写像 facebook newsfeed 这样的脚本。 我的查询返回了 27 条相同的记录。我不知道为什么。 这个怎么运作? 显示由我、我的朋友或我的个人资料撰写的帖子的脚本。

我的桌子: 用户: 身份证,名字,姓氏

朋友: 朋友1、朋友2、状态、日期

墙: update_id、作者、to_profile、内容、日期、照片

我的查询:

SELECT wall.update_id, wall.author, wall.to_profile, wall.content, wall.date, wall.photos,  users.*, friends.sender_id, friends.friend_id, friends.status 
FROM 
    wall 
INNER JOIN friends ON 
    wall.author = friends.sender1 
    AND friends.friend2 = '".$_SESSION['id']."' 
    AND friends.status = '1' OR wall.author = '".$_SESSION['id']."' 
    OR wall.to_profile = '".$_SESSION['id']."' 
INNER JOIN users ON users.id = wall.author 
ORDER BY wall.date DESC

我还想显示我喜欢的页面所写的帖子。 我创建了表格:

页面: page_id, page_name

page_likes: page_id、user_id、日期

和 *pages_wall:** like_id、page_id、user_id、日期

如何将此连接到我的查询?以及(最重要的)如何修复我的查询? 提前致谢, 马修

【问题讨论】:

    标签: php mysql facebook-wall


    【解决方案1】:

    这是很多人的加入。尝试使用您的 JOIN just 连接表,然后使用 WHERE 减少结果。因为就目前而言,这些 OR 并没有像你想象的那样工作,它们需要一些 () 围绕它们。

    我认为您需要对这个数据库进行一些结构上的更改,以便它在未来正常工作。我会为朋友添加一个 ID 字段,即使只是在管理员方面,您也会想要管理这些记录。

    另外,您不应该在 this 查询中查询 user.*。似乎您想提取每个用户设置...每个墙帖。这将在最后摆脱“INNER JOIN users ON users.id = wall.author”,这将有所帮助。在调用此墙显示之前,在查询中获取该信息。

    SELECT *
    FROM users
    WHERE users.id = wall.author 
    

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      相关资源
      最近更新 更多