如何从一个表中获取不同的数据,然后联接另一个表并取2列之和

时间:2018-10-20 16:41:34

标签: php mysql codeigniter-3

我有两个表,一个表包含我的订单详细信息,另一个表包含产品详细信息。我想订购不同的产品,它们的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的区别,以及我需要将相同订单的总和作为数量和同一产品的价格总和,并将其与另一个名为product的表结合起来,以基于order_details表中存储的productid获得产品名称

表格详细信息:

我的 order_details 表由(user_id,productid,quantity,price组成。 在产品编号3,3,2下是产品编号,在数量10,10,11等下,并且在价格下:64,64,396等。

产品表具有(serial,name,price,picture)。 我想要的是显示ID为3和2的产品,然后取每个产品的数量之和,还取每个产品的价格之和。实际上这是一个生态商业项目。用户登录以查看其订单。

1 个答案:

答案 0 :(得分:0)

尝试下一个查询,首先,您必须内部加入具有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