mysql - Prestashop 订购产品 sql

标签 mysql sql prestashop prestashop-1.6

在哪里我可以找到 Prestashop SQL 查询,它们显示按顺序购买的产品。

像这样: enter image description here

我正在创建一个自定义页面,在表中显示 100 个订单。如果单击订单,则会显示已订购的产品。我做了一个sql查询:

SELECT product_id, product_reference AS kood,product_name AS nimetus,product_quantity AS nr, pl.link_rewrite,psa.quantity as kogukogus,group_concat(ps.product_supplier_reference) as supp_ref, p.location AS asukoht,
         CONCAT(c.link_rewrite,'/',p.id_product,'-',pl.link_rewrite,'.html') link
        FROM ps_order_detail o
        LEFT JOIN ps_product_lang pl on o.product_id = pl.id_product
        LEFT JOIN ps_product p on p.id_product = pl.id_product
        LEFT JOIN ps_stock_available psa on p.id_product = psa.id_product
        LEFT JOIN ps_category_lang c on c.id_category = p.id_category_default
        LEFT JOIN ps_product_supplier ps on p.id_product = ps.id_product
        WHERE pl.id_lang=2 AND c.id_lang=2 AND id_order= '".$q."'
        GROUP BY product_id, kood,nimetus,nr,pl.link_rewrite, kogukogus,asukoht, link

但是当产品具有属性时,它会重复产品。

enter image description here

在本例中,iButton 有黑色和红色两种颜色(属性)。此订单只购买了一个黑色 iButton,数量为 20 个,但显示为三行。

我试图解决这个问题,但是我的 sql 查询又出现了另一个问题,当它没有属性时,它不会显示任何内容。

SELECT product_id, product_reference AS kood,product_name AS nimetus,product_quantity AS nr, pl.link_rewrite,psa.quantity as kogukogus,group_concat(ps.product_supplier_reference) as supp_ref, p.location AS asukoht,
         CONCAT(c.link_rewrite,'/',p.id_product,'-',pl.link_rewrite,'.html') link
        FROM ps_order_detail o
        JOIN ps_product_lang pl on o.product_id = pl.id_product
        JOIN ps_product p on p.id_product = pl.id_product
        JOIN ps_stock_available psa on p.id_product = psa.id_product
        JOIN ps_category_lang c on c.id_category = p.id_category_default
        JOIN ps_product_supplier ps on p.id_product = ps.id_product
        LEFT JOIN ps_product_attribute pa on p.id_product=pa.id_product
        WHERE pl.id_lang=2 AND pa.id_product_attribute = psa.id_product_attribute AND pa.id_product_attribute =o.product_attribute_id  AND c.id_lang=2 AND id_order= '".$q."'
        GROUP BY product_id, kood,nimetus,nr,pl.link_rewrite, kogukogus,asukoht, link

如何解决这个问题?

最佳答案

我认为您必须将 2 个 WHERE 条件移至 JOIN 条件。也许只移动LEFT JOIN上的条件就足够了。 这应该是结果:

SELECT DISTINCT product_id, product_reference AS kood,product_name AS nimetus,product_quantity AS nr, pl.link_rewrite,psa.quantity as kogukogus,group_concat(ps.product_supplier_reference) as supp_ref, p.location AS asukoht,
         CONCAT(c.link_rewrite,'/',p.id_product,'-',pl.link_rewrite,'.html') link
        FROM ps_order_detail o 
        JOIN ps_product_lang pl on o.product_id = pl.id_product
        JOIN ps_product p on p.id_product = pl.id_product
        JOIN ps_stock_available psa on p.id_product = psa.id_product
        JOIN ps_category_lang c on c.id_category = p.id_category_default
        JOIN ps_product_supplier ps on p.id_product = ps.id_product
        LEFT JOIN ps_product_attribute pa on p.id_product=pa.id_product
                   AND psa.id_product_attribute = pa.id_product_attribute 

        WHERE pl.id_lang=2 AND c.id_lang=2 AND id_order= '".$q."'

关于mysql - Prestashop 订购产品 sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47574389/

相关文章:

php - mysql中的许多记录突然消失/丢失

php - 有没有办法根据它们属于哪一列来对 MySql 中的值进行排名?

mysql - 如何优化prestashop类别随机获取产品

java - 如何检查结果集是否为空

php - Sql:跨多个表的唯一字段约束(slug)(doctrine/symfony)

html - 在 Prestashop 上加载页面期间白色闪烁

Mysql查询数据子集

sql - 如何在mysql中有效存储连续变量

mysql - Postgres JDBC 的表名别名

php - 为什么 MySQL 不返回最后插入的 id,它返回 0?