我正在尝试执行一个相对简单的 MySQL 查询,其中返回用户添加的最喜欢的帖子。但是,我唯一的错误是他收藏夹中的帖子名称返回为添加收藏夹的用户,而不是撰写帖子的实际用户。下面是我的收藏夹数据库,然后是下面的查询。如果您需要我提供更多信息,请告诉我,我很乐意以任何方式提供帮助。
$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]
最佳答案
您应该上传这个问题的数据库架构,并且您应该将查询格式化为更具可读性,但无论如何我不知道这是否正确,我无法尝试,但请尝试并告诉我是否可以是错误的(我不知道我在做什么,因为我看不到架构,而且我不知道你想做什么)
SELECT 主体、纬度、经度、Users.用户名、
用户.个人资料图片、文件名、帖子日期
来自帖子、收藏夹、用户
WHERE Users.username=:用户名 AND Posts.IDPosts = favorites.IDPosts
AND favorites.IDUser = Users.IDUser ORDER BY post_date DESC
编辑
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
关于php - SQL 加入收藏夹列表返回错误的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24253923/