php - SQL 加入收藏夹列表返回错误的名称

标签 php mysql sql select join

我正在尝试执行一个相对简单的 MySQL 查询,其中返回用户添加的最喜欢的帖子。但是,我唯一的错误是他收藏夹中的帖子名称返回为添加收藏夹的用户,而不是撰写帖子的实际用户。下面是我的收藏夹数据库,然后是下面的查询。如果您需要我提供更多信息,请告诉我,我很乐意以任何方式提供帮助。

enter image description here

$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/

相关文章:

MySQL 组函数的无效使用

mysql - 从列中选择最大值及其相应的日期

php - 允许具有自己限制的别名的单个查询

php - AJAX 使用链接而不是按钮加载内容?

mysql - 为什么 MySQL 的默认排序规则是 latin1_swedish_ci?

php - 内连接或foreach从数据库获取最终数据?

php/js - 如何在页面卸载时删除文件?

php - 使用 Yii2 DbMessageSource 获取需要翻译的所有文本的列表

mysql - 如何编写这样复杂的查询?

mysql - 在 SELECT 中使用 case 时出现 SQL 语法错误