使用单个查询从两个不同的mysql表中获取数据时面临的问题。!

时间:2019-03-19 11:56:32

标签: php 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();

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

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

有什么建议或帮助吗?

2 个答案:

答案 0 :(得分:1)

尽管查询正常工作,但它根本没有效率,因为它使用了隐式cross join,这会导致非常大的结果集。
在将WHERE应用于条件的情况下,使用适当的INNER JOIN

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替换?

答案 1 :(得分:0)

您可以为此使用JOIN。例子

select P.name, U.name from post P NATURAL JOIN user U;