php - 如何从表中获取不同的数据,然后连接其他表并求两列的总和

标签 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,并且我需要与数量和数量相同的订单的总和相同产品的价格总和,并将其与另一个名为 products 的表连接起来,以根据 order_details 表中存储的 Productid 获取产品名称

表格详细信息:

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

产品表有(序列号,名称,价格,图片)。 我想要的是显示 id 3 和 2 的产品,然后计算每个产品的数量总和以及每个产品的价格总和。实际上这是一个电子商务项目。用户登录查看他的订单。

最佳答案

尝试下一个查询,首先您必须将产品与 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

关于php - 如何从表中获取不同的数据,然后连接其他表并求两列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52907869/

相关文章:

php - 创建一个随机的 Magento 优惠券

mysql - 从查询字符串设置的 Perl 变量在子例程中不可用(在某些子例程中可用!)

php - 如何使用codeigniter显示mysql数据透视表数据

mysql - 如何使用sql查询将文本插入到mysql的表中?

javascript - 如何让它在JavaScript中刷新而不影响HTML?

codeigniter-3 - 消息 : call_user_func_array() expects parameter 1 to be a valid callback

error-handling - Codeigniter 3 Postgresql驱动程序错误代码

php - 无法构建 xdebug

javascript - 自动点击加载更多但自动点击仅在第一次手动点击后触发

php - 使用 Zend (PHP) 在 Gmail 中包含客户的默认电子邮件签名