我正在为我们的知识库构建一个简单的搜索表(最终使用jquery Datatables)。我能够返回我需要的所有信息,但是当一行链接到我们的多个产品时,我会得到“重复”的行。
例如,解决方案#377适用于我们数据库中的产品1,产品2和产品3。当我运行查询时,我得到以下结果:
ID Product Description
377 Product1 Description xyz
377 Product2 Description xyz
377 Product3 Description xyz
三行中唯一的区别是“产品”列。有没有办法将这些数据作为:
返回ID Product Description
377 Product1, Product2, Product3 Description xyz
我的查询:
select kb.kbarticleid as ID,
kbc.title as Product,
kb.subject as Subject,
kbd.contentstext as Contents
from swkbarticles kb
inner join swkbarticledata kbd on kb.kbarticleid = kbd.kbarticleid
inner join swkbarticlelinks kbl on kb.kbarticleid = kbl.kbarticleid
inner join swkbcategories kbc on kbl.linktypeid = kbc.kbcategoryid
答案 0 :(得分:2)
我接受了您的查询,将其放入子查询中,将所有产品收集为CSV字符串,然后运行GROUP BY
SELECT ID,GROUP_CONCAT(Product) Product,Description
FROM
(
select kb.kbarticleid as ID,
kbc.title as Product,
kb.subject as Description,
kbd.contentstext as Contents
from swkbarticles kb
inner join swkbarticledata kbd on kb.kbarticleid = kbd.kbarticleid
inner join swkbarticlelinks kbl on kb.kbarticleid = kbl.kbarticleid
inner join swkbcategories kbc on kbl.linktypeid = kbc.kbcategoryid
) A GROUP BY ID,Description;
对于我的快速和肮脏的答案,我没有对表现提出任何要求。我不知道主题是描述还是哪个表有描述栏。
假设您的查询有效,我将其设为子查询并返回ID,描述和产品。然后,我将这三列调用GROUP_CONCAT函数。该功能将合并所有共享相同GROUP BY元素的产品。
原则上,这将产生您要求的ID 377的输出。