如何获取与帖子ID和显示记录匹配的标签

时间:2017-08-10 07:49:48

标签: mysql pdo

伙计们,我有以下表格

  1. 帖子
  2. 标记
  3. post_tags
  4. 我从帖子中保存postID和tagsID,将post_tags表中的表格标记为post_id,tag_id

    现在我希望在post.php页面中显示与标签匹配的帖子,但是如何进行查询以获取匹配的标签?

    import * as mainActions from '../actions/mainActions'
    import * as menuActions from '../actions/menuActions'
    
    const actionsToMap = {...mainActions, ...menuActions}
    export default connect(mapStateToProps, actionsToMap)(Main)
    

    这里我正在分享我的实际数据结构以及如何将数据保存到每个表中,希望这可以帮助我了解JOIN表吗?

    这些是3个表

    $stmt = $db->query('SELECT * FROM posts WHERE postID LIKE "%'.$id.'%"');                
                    $stmt->execute();
                    while($rw = $stmt->fetch()){
    
    }
    

    任何帮助?

1 个答案:

答案 0 :(得分:0)

您需要使用JOIN,例如:

SELECT *
FROM blog_posts bp JOIN blog_posts_tags bpt ON bp.postID = bpt.post_id
JOIN blog_tags bt ON bt.tagID = bpt.tag_id
WHERE bt.tagName = 'Bakeries';

如果您想按id进行搜索,可以在t.id条件下使用WHERE,例如:

SELECT *
FROM blog_posts bp JOIN blog_posts_tags bpt ON bp.postID = bpt.post_id
JOIN blog_tags bt ON bt.tagID = bpt.tag_id
WHERE bt.tagID = 2;

此处,id对应于帖子和标签的ID(在各个表中),post_idtag_idpost_tags表中相应外键列的名称。

这是 SQL Fiddle