我的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
如何将此连接到我的查询?而且(最重要的)如何修复我的查询? 提前致谢, 马修
答案 0 :(得分:0)
这是很多加入。尝试使用您的JOIN 连接表,然后使用WHERE来减少结果。因为就目前而言,这些OR并不像你想象的那样工作,它们需要一些()。
我认为您需要对此数据库进行一些结构更改才能在将来运行良好。我会向朋友添加一个ID字段,即使只是在管理员方面,你也想要管理这些记录。
此外,您不应该在此查询中查询用户。*。看起来你想要为每一个墙上的帖子提取每个用户设置...... 。这将在最后摆脱“INNER JOIN用户ON users.id = wall.author”,这将有所帮助。在调用此墙显示之前,请在查询中获取该信息。
SELECT *
FROM users
WHERE users.id = wall.author