代码之家  ›  专栏  ›  技术社区  ›  axsuul

需要有关mysql连接处理四个表的帮助

  •  1
  • axsuul  · 技术社区  · 16 年前

    我需要有关MySQL查询的帮助。这个例子比我实际需要的要简单得多,但是它是相似的。这是我的示例表,我试图使其易于阅读。

    posts
    ---------------
    id           date
    1            2010
    2            2010 
    
    posts_tags
    ---------------
    post_id      tag_id
    1            1
    1            2
    1            3
    
    tags
    --------------
    id       tagname
    1        foo
    2        bar
    3        hello
    
    tags_active
    --------------
    tag_id   active
    1        yes
    2        no
    3        no
    

    基本上我需要做的是 积极的 属于post id 1的标记。在这种情况下,它应该返回

    我曾试图提出这样一个问题:

    SELECT tags.tagname
    FROM posts
        JOIN posts_tags ON posts.id = posts_tags.post_id
        JOIN tags ON posts_tags.tag_id = tags.id
        JOIN tags_active ON tags.id = tags_active.id
    WHERE tags_active.active = 'yes'
    

    不幸的是,似乎不起作用。请告知,谢谢您的时间。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Fenton    16 年前

    上一次连接中有一个小错误——在本例中,它可能值得显式地进行内部连接。

    SELECT
        tags.tagname
    FROM
        posts
    INNER JOIN
        posts_tags ON posts.id = posts_tags.post_id
    INNER JOIN
        tags ON posts_tags.tag_id = tags.id
    INNER JOIN
        tags_active ON tags.id = tags_active.tag_id
    WHERE
        tags_active.active = 'yes'
    
        2
  •  2
  •   Oded    16 年前

    你上次加入是在 tags.id = tags_active.id .

    应该是 tags.id = tags_active.tag_id :

    SELECT tags.tagname
    FROM posts
        JOIN posts_tags ON posts.id = posts_tags.post_id
        JOIN tags ON posts_tags.tag_id = tags.id
        JOIN tags_active ON tags.id = tags_active.tag_id
    WHERE tags_active.active = 'yes'