1

ナレッジベース用に単純な検索テーブルを作成しています (最終的には jquery Datatables を使用します)。必要なすべての情報を返すことができますが、1 つの行が複数の製品にリンクされていると、「重複した」行が表示されます。

たとえば、ソリューション # 377 は、DB 内の製品 1、製品 2、および製品 3 に関連しています。クエリを実行すると、次の結果が得られます。

ID          Product          Description
377          Product1         Description xyz
377          Product2         Description xyz
377          Product3         Description xyz

3 つの行の唯一の違いは、「製品」列です。このデータを次のように返す方法はありますか:

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、説明、および製品のみを返しました。次に、これら 3 つの列を取得して、GROUP_CONCAT関数を呼び出します。この関数は、同じ GROUP BY 要素を共有するすべての製品を結合します。

原則として、要求した ID 377 の出力が生成されます。

于 2012-06-27T20:15:27.787 に答える