MySQL多对多,获取值

时间:2018-08-12 18:45:31

标签: mysql sql many-to-many

我在数据库中有3个表:wp_connectionswp_connections_termswp_connections_relationships。第一个包含公司,idorganization列,而organization包含公司名称。第二个表的“ term_id”列为PK,分支名称为name列。

第三张表是一个中间表,其中包含FK:term_taxonomy_id -> wp_connections_terms__term_identry_id -> wp_connections__id

我想做的是从数据库中获取所有wp_connections行,并将wp_connections_termsterm_id的数据name联接到每个相关行。

这是我的查询:

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 

此查询为我提供了数据,但某些行重复了。 wp_connections表中有62行,但此查询得到74条结果。我在做什么错了?

这是指向sqlfiddle的链接-http://sqlfiddle.com/#!9/a71d33/2,其中包含架构和一些数据。由于输入字符数的限制,我已经删掉了该用例不需要的列。

1 个答案:

答案 0 :(得分:1)

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

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

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