我有两个表,一个用于帖子,另一个用于用户。我正在从“帖子”表中获取所有帖子,并从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字段都是相同的。)
有什么建议或帮助吗?
答案 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;