php—如何从一个表中获取不同的数据,然后连接其他表并获取2列的总和

xe55xuns  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(301)

我有两个表一个表包含我的订单详细信息,另一个表包含产品详细信息。我想得到不同的产品订购和他们的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\u details中获取产品及其id的区别,并且我需要相同订单的总和作为同一产品的数量和价格的总和,并将其与另一个名为products的表联接,以获取基于该表的产品名称productid存储在order\ U details表中
表格详细信息:
我的订单详情表包括 (user_id,productid,quantity,price ). 在productid 3、3、2下是productid,在数量10、10、11等下是productid,在价格64、64396等下是productid。
表产品表 (serial,name,price,picture) . 我想要的是显示id为3和2的产品,然后计算每个产品的数量和价格。实际上,这是为一个ecomerce项目。用户登录以查看其订单。

ercv8c1e

ercv8c1e1#

尝试下一个查询,首先您必须内部连接带有订单详细信息的产品,这样您就可以放弃所有从未订购过的产品。其次,按产品公共属性分组,然后对这些组使用聚合方法。

$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型

相关问题