首页 > 解决方案 > 一个表具有多个相同 ID 的连接表

问题描述

我想加入三个表。这些表之一 (modx_article_category) 可以包含具有相同 ID 的行(文章具有多个类别)。我想将这些连接的值放在结果以逗号分隔的单个列中。

到目前为止,这是我的代码:

我一直在寻找解决方案,但我什至不确定要谷歌什么...

CREATE TABLE article_en AS
SELECT *
FROM mod_article_c, category_c, modx_article_category
WHERE mod_article_c.article_id = modx_article_category.article
AND modx_article_category.category = category_c.category_id
AND mod_article_c.article_lang = "en"
AND category_c.category_lang = "en"

数据库样本:

https://raslan.de/index.php/s/cK9mxGyj9wKzFsS

这只会选择一个类别,即使可能有更多。

如果您需要更多信息,请告诉我。提前致谢。

标签: mysqlsql

解决方案


您可以使用 group_concat。

SELECT c1.category_id, 
       Group_concat(DISTINCT article ORDER BY article) 
FROM   mod_article_c c 
       INNER JOIN modx_article_category c1 
               ON c.article_id = c1.article 
       INNER JOIN category_c c2 
               ON c1.category = c2.category_id 
WHERE  c.article_lang = "en" 
       AND c2.category_lang = 'en' 
GROUP  BY category_id; 

上面的查询将返回每个 category_id/category 的所有文章


推荐阅读