首页 > 解决方案 > 如何从表中获取不同的数据,然后加入其他表并取 2 列的总和

问题描述

我有两张表,一张包含我的订单详细信息,另一张包含产品详细信息。我想订购不同的产品,它们的 id 也是订购的相同产品和价格的总和

$query = $this->db->query('SELECT 
distinct("productid,picture"),SUM(quantity) as `quantity`,SUM(price) as 
`amount` FROM `order_details` LEFT OUTER JOIN `products` ON 
`products.serial`=`order_details.productid` where `order_details.user_id` = 
`$data[results]`');
 return $query->result();

上面是我使用的查询,如果用户多次和多天订购产品意味着我想从表 order_details 中获取产品的不同及其 id 以及我需要相同订单的总和作为数量和价格总和相同的产品,并将其与另一个名为 products 的表连接,以根据存储在 order_details 表中的 productid 获取产品名称

表格详情:

我的order_details表由(user_id,productid,quantity,price) 组成。productid 3、3、2 下是productids,数量下是10、10、11 等,价格下是:64、64、396 等。

产品表有(serial,name,price,picture)。我想要的是显示 id 为 3 和 2 的产品,然后计算每个产品的数量总和,并计算每个产品的价格总和。实际上这是一个电子商务项目。用户登录查看他的订单。

标签: phpmysqlcodeigniter-3

解决方案


尝试下一个查询,首先您必须将产品与 order_details 进行内部连接,这样您就可以丢弃所有从未订购过的产品。其次,您产品的共同属性进行分组,然后对这些组使用聚合方法。

$query = $this->db->query(
   'SELECT
        p.serial,
        p.picture,
        p.name,
        SUM(o.quantity) AS total_ordered_quantity,
        SUM(o.price) AS total_amount
    FROM
        products AS p
    INNER JOIN
        order_details AS o ON o.productid = p.serial
    WHERE
        o.user_id = $the_user_id
    GROUP BY
        p.serial, p.picture, p.name'
);

return $query->result();

您可以在下一个链接上查看查询的工作示例:

http://sqlfiddle.com/#!9/c2a1b0/1


推荐阅读