首页 > 解决方案 > 使用单个查询从两个不同的 mysql 表中获取数据时遇到问题..!

问题描述

我有两张桌子,一张用于帖子,另一张用于用户。我正在从 tbl_users 获取“帖子”表中的所有帖子和用户数据(发布该帖子的人)。

目前,我正在使用这个查询:

$query = $pdo->prepare("SELECT * FROM `posts`,`tbl_users` WHERE id = user_id_p ORDER BY `post_id` DESC");
            $query->execute();
            return $query->fetchAll();

它工作正常,它正在从帖子表中获取所有帖子,并从 tbl_users 中获取用户数据。但是,我的问题是我不想获取所有帖子,但我只想获取特定用户(例如仅由 John)发布的帖子以及仅来自 tbl_user 的 John 的用户数据。

(来自 tbl_users 的字段 ID 和来自表 posts 的字段 user_id_p 在两个表中都是相同的。)

有什么建议或帮助吗?

标签: phpmysql

解决方案


尽管您的查询正在运行,但它一点也不高效,因为它使用了一个隐式交叉连接,这会导致一个非常大的结果集。
使用适当的INNER JOIN并应用以下条件WHERE

SELECT u.*, p.* 
FROM tbl_users u INNER JOIN posts p
ON u.id = p.user_id_p
WHERE u.id = ?
ORDER BY p.post_id DESC

替换?为用户的 id。


推荐阅读