1

我有 3 张桌子

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

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

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

我的尝试

 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,因为它有两个关键字。任何帮助

提前致谢

4

2 回答 2

1

使用 GROUP_CONCAT 将它们放在一起。

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;
于 2013-06-18T01:03:38.457 回答
0

你可以这样做:

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;
于 2013-06-18T00:21:55.587 回答