一次记录27次

时间:2013-07-20 13:36:32

标签: php mysql facebook-wall

我的MySQL存在很大问题。我想写像facebook newsfeed这样的脚本。 我的查询给我27个相同的记录。我不知道为什么。 这个怎么运作? 脚本显示由我,我的朋友或我的个人资料撰写的帖子。

我的桌子: 用户: id,firstname,lastname

朋友: friend1,friend2,status,date

壁: 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,date

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

1 个答案:

答案 0 :(得分:0)

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

我认为您需要对此数据库进行一些结构更改才能在将来运行良好。我会向朋友添加一个ID字段,即使只是在管理员方面,你也想要管理这些记录。

此外,您不应该在查询中查询用户。*。看起来你想要为每一个墙上的帖子提取每个用户设置...... 。这将在最后摆脱“INNER JOIN用户ON users.id = wall.author”,这将有所帮助。在调用此墙显示之前,请在查询中获取该信息。

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