php - 一项记录27次

标签 php mysql facebook-wall

我的 MySQL 有一个大问题。我想编写像 Facebook 新闻源这样的脚本。 我的查询返回 27 条相同的记录。我不知道为什么。 怎么运行的? 显示我、我的 friend 或我的个人资料撰写的帖子的脚本。

我的表格: 用户: ID、名字、姓氏

friend : friend 1, friend 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、日期

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

最佳答案

正在进行大量的加入事件。尝试使用 JOIN just 连接表,然后使用 WHERE 来减少结果。因为就目前情况而言,这些 OR 并不像您想象的那样工作,它们需要一些 () 围绕它们。

我认为您需要对此数据库进行一些结构更改,以便它将来能够正常工作。我会为 friend 添加一个 ID 字段,即使只是在管理端,您也会想要管理这些记录。

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

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

关于php - 一项记录27次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762817/

相关文章:

php - 菜单中的效果

php - 给出的错误 : array_flip() expects parameter 1 to be array, 字符串

php - 如何跨不同的路由请求传递大型数据集 - Laravel

mysql - 我应该计数(*)还是不?

java - 使用 TableModelListener 从数据库检索数据到 JTable(JTable 中有 JCheckbox)时出错

python - Django MySQL 查询 - 选择比上一行大 60 分钟的日期时间?

android - 从 Android 版 Facebook SDK 向 Facebook 提要对话框添加内容

javascript - 学生已存在注册系统验证 (Codeigniter)

php - 通过 PHP 发布到 Facebook 粉丝页面的简单示例?

facebook-graph-api - Facebook墙贴的最大消息长度是多少