You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何整合两个MySQL函数实现PrestaShop单SQL导出

解决PrestaShop多表关联+行转列的SQL整合问题

我懂你现在的需求:把商品基础信息、不同标签的额外内容(配料、过敏原)整合到单行结果里对吧?其实只要把你第二个查询的行转列逻辑作为一个派生表,和第一个查询的基础表关联起来就行,具体SQL可以这么写:

SELECT 
    a.id_product, 
    a.ean13, 
    a.weight, 
    b.name, 
    tab_content.ingred, 
    tab_content.allerg
FROM ps_product AS a
INNER JOIN ps_product_lang AS b ON b.id_product = a.id_product
INNER JOIN (
    -- 这里复用你第二个查询的行转列逻辑,作为子查询提取配料和过敏原
    SELECT 
        t1.id_product, 
        t1.content AS ingred, 
        t2.content AS allerg
    FROM ps_extraproducttab_product_lang t1
    INNER JOIN ps_extraproducttab_product_lang t2 
        ON t1.id_product = t2.id_product 
        AND t1.id_tab = '1' 
        AND t2.id_tab = '2'
) AS tab_content ON tab_content.id_product = a.id_product

写法说明:

  • 内层子查询tab_content负责把ps_extraproducttab_product_lang里同一个商品的两行记录(对应id_tab=1和id_tab=2)合并成一行,生成ingred(配料)和allerg(过敏原)两个独立字段。
  • 外层查询将这个子查询结果和商品基础表ps_product、商品语言表ps_product_lang通过id_product关联,就能一次性拿到所有你需要的单行完整数据。

额外小提示:

如果存在部分商品没有配料或过敏原数据的情况,你可以把外层的INNER JOIN改成LEFT JOIN,这样即使没有对应标签的内容,也能保留商品的基础信息(缺失内容的字段会显示为NULL)。

内容的提问来源于stack exchange,提问作者pljvp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:12:36