1

我正在为我们的知识库构建一个简单的搜索表(最终使用 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
4

1 回答 1

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 的输出。

于 2012-06-27T20:15:27.787 回答