【问题标题】:Facing issues while fetching data from two different mysql tables using a single query..!使用单个查询从两个不同的 mysql 表中获取数据时遇到问题..!
【发布时间】:2019-03-19 11:56:32
【问题描述】:

我有两张表,一张用于帖子,另一张用于用户。我正在从 'posts' 表中获取所有帖子,并从 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 在两个表中都是相同的。)

有什么建议或帮助吗?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    虽然您的查询正在运行,但它一点也不高效,因为它使用了一个隐含的cross join,这会导致一个非常大的结果集。
    使用适当的INNER JOINWHERE 应用的条件:

    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。

    【讨论】:

      【解决方案2】:

      您可以为此使用JOIN。示例

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2021-02-23
        • 2019-05-27
        • 2014-06-10
        • 2011-10-30
        • 2015-06-18
        相关资源
        最近更新 更多