我的 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/