【问题标题】:Is it possible to return multiple cells into a single cell from a php/mysql query?是否可以从 php/mysql 查询中将多个单元格返回到单个单元格中?
【发布时间】:2012-06-27 20:12:11
【问题描述】:

我正在为我们的知识库构建一个简单的搜索表(最终使用 jquery 数据表)。我能够返回我需要的所有信息,但是当一行链接到我们的多个产品时,我会得到“重复”的行。

例如,解决方案#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

【问题讨论】:

    标签: mysql datatables


    【解决方案1】:

    我接受了您的查询,将其放入子查询中,将所有产品收集为 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 的输出。

    【讨论】:

    • 完美!你介意解释一下为什么这样做吗?
    • BTW 哪个表有描述?这样,我可以正确地雕刻查询。
    • 知道了-我还在连接字段之间添加了一个空格:SELECT ID,GROUP_CONCAT(' ',Product) Product, Contents FROM ( select kb.kbarticleid as ID, kbc.title as Product, kb .subject 作为主题,kbd.contentstext 作为来自 swkbarticles 的内容 kb 内部连接 ​​swkbarticledata kbd on kb.kbarticleid = kbd.kbarticleid 内部连接 ​​swkbarticlelinks kbl on kb.kbarticleid = kbl.kbarticleid 内部连接 ​​swkbcategories kbc on kbl.linktypeid = kbc.kbcategoryid ) A GROUP BY ID,Contents;
    猜你喜欢
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多