我正在尝试创建一个像facebook这样的墙帖脚本
在新闻提要区域,它应该显示来自当前用户和朋友的帖子。
我用的是三张桌子:
当任何用户添加另一个用户时,这两个用户都将添加到“朋友”表中。
我使用mysql视图创建一个临时表,用以下语句存储当前用户的所有朋友:
$friends = "CREATE VIEW ".mysql_real_escape_string($_SESSION['username'])." AS
SELECT users.username "."FROM users, friends "."
WHERE ((users.username = friends.user1 OR users.username = friends.user2) AND
(users.username != '".mysql_real_escape_string($_SESSION['username'])."')) AND
(friends.user1 = '".mysql_real_escape_string($_SESSION['username'])."' OR
friends.user2 = '".mysql_real_escape_string($_SESSION['username'])."')";
mysql_query($friends) or die(mysql_error());我正在使用下面的声明显示页面上的帖子:
$query = "SELECT posts.*, user.fname, user.lname, user.username "."FROM
posts, users, ".mysql_real_escape_string($_SESSION['username'])." "."
WHERE
(users.username = ".mysql_real_escape_string($_SESSION['username']) ".username
AND users.username = posts.username) OR
(users.username = '".mysql_real_escape_string($_SESSION['username'])."' AND
users.username = posts.username)
ORDER BY posts.post_id DESC LIMIT 0, 11";问题是,它显示朋友的帖子没有任何问题;但是来自当前用户的帖子是重复的,每个朋友一次。
换句话说,如果我有5个朋友,那么我的每个帖子将显示5次。
请让我知道这个查询有什么问题,如果有更好的方法,请给我发邮件。
发布于 2012-09-14 15:26:19
您需要使用MySQL 按组聚合:
$query = "SELECT posts.*, user.fname, user.lname, user.username "."
FROM posts, users, ".mysql_real_escape_string($_SESSION['username'])." "."
WHERE (users.username = ".mysql_real_escape_string($_SESSION['username']) ".username
AND users.username = posts.username)
OR (users.username = '".mysql_real_escape_string($_SESSION['username'])."' AND
users.username = posts.username)
GROUP BY posts.post_id
ORDER BY posts.post_id DESC
LIMIT 0, 11";`这将根据post_id将帖子分组为1行。
https://stackoverflow.com/questions/12427091
复制相似问题