繁体   English   中英

一次记录27次

[英]One record 27 times

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

我的表格:用户: id,名字,姓氏

朋友: friend1,friend2,状态,日期

墙: 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,日期

如何将此连接到我的查询? 并且(最重要的)如何修复我的查询? 预先感谢,马修

参与的过程很多。 尝试使用JOIN的只是连接表,然后使用WHERE砍伐的结果。 因为就目前而言,这些OR并不像您可能认为的那样起作用,因此它们周围需要一些()。

我认为您需要对该数据库进行一些结构上的更改才能使其在将来正常运行。 我会向朋友添加一个ID字段,即使只是在管理端,您也要管理这些记录。

另外,您不应该在查询中查询user。*。 似乎您想退出每个用户设置... 对于每个墙贴 最后,这将摆脱“ INNER JOIN users ON users.id = wall.author”的问题,这将有所帮助。 在调用此墙壁显示之前,请先查询获得该信息。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM