首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多对多映射的SQL查询

多对多映射的SQL查询
EN

Stack Overflow用户
提问于 2013-06-18 08:16:19
回答 2查看 114关注 0票数 1

我有三张桌子

代码语言:javascript
复制
Entries Table 

ID    Name      Title
1     test1     hello1
2     test2     hello2
3     test3     hello3


Keywords Table
ID    Text
5     sample
6     testing
7     hello

EntryKey Table
ID     KeywordID     EntryID
1         5             1
2         6             2
3         7             3
4         6             2
5         7             1

条目和关键字具有多对多关系。每个条目可以有多个关键字,并且一个关键字可以在多个条目中

我想要的是获取条目及其相关的关键字,但我不想重复清单中的条目。

我的尝试

代码语言:javascript
复制
 SELECT e.id, e.title, e.name, e.text, e.emailaddress, k.text
  FROM entries e
       LEFT JOIN keyentries ke
              ON e.id = ke.entryID
      LEFT JOIN keywords k
              ON k.id = ke.keywordID ;

但它给了我两次条目1和2,因为它有两个关键字。有什么帮助吗?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-18 09:03:38

使用GROUP_CONCAT将它们整合在一起。

代码语言:javascript
复制
SELECT e.id, e.title, e.name, e.text, e.emailaddress, GROUP_CONCAT(k.text) keywords
FROM entries e
LEFT JOIN keyentries ke
    ON e.id = ke.entryID
LEFT JOIN keywords k
    ON k.id = ke.keywordID
GROUP BY e.id;
票数 1
EN

Stack Overflow用户

发布于 2013-06-18 08:21:56

你可以这样做:

代码语言:javascript
复制
SELECT e.id, e.title, e.name, e.text, e.emailaddress, k.text
FROM entries e
LEFT JOIN keyentries ke
    ON e.id = ke.entryID
LEFT JOIN keywords k
    ON k.id = ke.keywordID
GROUP BY e.id;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17158818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档