如何整合两个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
相关产品推荐
相关产品推荐

