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

MySQL多对多,获取值

  •  1
  • errorous  · 技术社区  · 7 年前

    wp_connections , wp_connections_terms wp_connections_relationships . 第一个包含公司, id organization 列,和 组织 包含公司名称。第二个表的“term_id”列是PK,并且 name 分支名称的列。

    term_taxonomy_id -> wp_connections_terms__term_id entry_id -> wp_connections__id .

    wp_连接 wp_连接术语 数据,两者 term_id 到每个相关行。

    SELECT id, 
           organization, 
           options, 
           term_id, 
           name 
    FROM   wp_connections 
           JOIN wp_connections_term_relationships 
             ON wp_connections.id = wp_connections_term_relationships.entry_id 
           JOIN wp_connections_terms 
             ON wp_connections_terms.term_id = 
                wp_connections_term_relationships.term_taxonomy_id 
    ORDER  BY organization ASC 
    

    此查询提供数据,但有些行重复。我有62排 wp_连接 表,但是我通过这个查询得到74个结果。我做错什么了?

    这里有一个到sqlfiddle的链接- http://sqlfiddle.com/#!9/a71d33/2 使用模式和一些数据。由于输入字符数的限制,我已经剪切了这个用例不需要的列。

    1 回复  |  直到 7 年前
        1
  •  1
  •   ScaisEdge    7 年前

    可能是某个表中的某些行与其他表中的多个行相关,因此查询返回重复的行。。

    如果需要不同的结果,则将其添加到查询中

    SELECT DISTINCT
        id, 
       organization, 
       options, 
       term_id, 
       name 
    FROM   wp_connections 
       JOIN wp_connections_term_relationships 
         ON wp_connections.id = wp_connections_term_relationships.entry_id 
       JOIN wp_connections_terms 
         ON wp_connections_terms.term_id = 
            wp_connections_term_relationships.term_taxonomy_id 
     ORDER  BY organization ASC