Php SQL联接收藏夹列表返回错误的名称
我试图做一个相对简单的MySQL查询,返回用户添加的最喜欢的帖子。但是,我唯一的错误是favorites返回的帖子名是添加收藏夹的用户,而不是写帖子的实际用户。下面是我的收藏夹数据库,然后是下面的查询。如果您需要我提供更多信息,请告诉我,因为我很乐意以任何方式提供帮助Php SQL联接收藏夹列表返回错误的名称,php,mysql,sql,select,join,Php,Mysql,Sql,Select,Join,我试图做一个相对简单的MySQL查询,返回用户添加的最喜欢的帖子。但是,我唯一的错误是favorites返回的帖子名是添加收藏夹的用户,而不是写帖子的实际用户。下面是我的收藏夹数据库,然后是下面的查询。如果您需要我提供更多信息,请告诉我,因为我很乐意以任何方式提供帮助 $username = $_GET['username']; //initial query $query = "SELECT body, latitude, longitude, (SELECT username FROM U
$username = $_GET['username'];
//initial query
$query = "SELECT body, latitude, longitude, (SELECT username FROM Users WHERE Users.IDUser=Favorites.IDUser) AS username, (SELECT profile_picture FROM Users WHERE Users.IDUser=Favorites.IDUser) AS profile_picture, filename, post_date FROM Posts, Favorites WHERE Posts.IDPosts = Favorites.IDPosts AND Favorites.IDUser=(Select IDUser FROM Users WHERE Users.username=:username) ORDER BY post_date DESC";
$query_params = array(
':username' => $username
);
数据库图:
!![在此处输入图像描述][2]您应该已上载此问题的数据库架构,并且您应该已将查询格式化为更具可读性,但无论如何,我不知道这是否正确,我无法尝试,但请尝试,如果错误,请让我知道(我不知道我在做什么,因为我看不到模式,也不知道你想做什么)
选择主体、纬度、经度、Users.username、,
Users.profile\u图片、文件名、发布日期
来自帖子、收藏夹、用户
其中Users.username=:username和Posts.IDPosts=收藏夹.IDPosts
和Favorites.IDUser=Users.IDUser按发布日期描述的订单
编辑
SELECT Users.profile_picture, Users.username, latitude,
longitude, post_date, filename
FROM Users
JOIN Posts ON Posts.IDUser = Users.IDUser
JOIN Favorites ON Posts.IDPosts = Favorites.IDPosts
WHERE Users.username=:username
AND Users.IDUser = Posts.IDUser
AND Posts.IDPosts = Posts.IDPosts
发布你的整个架构。很抱歉,但你这么说是什么意思?直接在mysql上测试你的查询!请格式化你的查询。目前,它是不可能读取的。在那之前,我投票支持结束,因为“不清楚你在问什么”我这样做了,但它的工作,但似乎只返回我的用户名为其他人的帖子。关闭,但它仍然会显示错误的用户名,如“测试从姆伯格”它是另一个作者。我将发布数据库的图表。请参见上面的图表。再试一次。我没有做任何测试,尽管它做了相同的事情。它将只显示设备用户的收藏夹用户名,包括最初不是他们的帖子,而不是其他用户标记的收藏夹的用户名。