Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php sql中将小计计算为联接多个表的总计_Php_Mysql - Fatal编程技术网

在php sql中将小计计算为联接多个表的总计

在php sql中将小计计算为联接多个表的总计,php,mysql,Php,Mysql,我有三张这样的桌子 订单表 orders `order_id`,`order_date` orders_items `order_id`,`product_id`,`quantity`,`parent` products `product_id`,`product_price` 订单项目表 orders `order_id`,`order_date` orders_items `order_id`,`product_id`,`quantity`,`parent` products `p

我有三张这样的桌子

订单表

orders `order_id`,`order_date`
orders_items `order_id`,`product_id`,`quantity`,`parent`
products `product_id`,`product_price`
订单项目表

orders `order_id`,`order_date`
orders_items `order_id`,`product_id`,`quantity`,`parent`
products `product_id`,`product_price`
产品表

orders `order_id`,`order_date`
orders_items `order_id`,`product_id`,`quantity`,`parent`
products `product_id`,`product_price`
我的期望

我想在最后一行动态地进行总计,我已经构建了自己的查询并用于显示上面多个表中的数据,但无法显示上面提到的总计。

这是我的问题

<?php

    $query = $db->prepare("SELECT * FROM orders WHERE month(order_date)='".$_POST['bulan']."' AND YEAR(order_date)='".$_POST['tahun']."'");

?>
<table class="table table-hover table-bordered display" id="report" width="100%">
    <thead>
        <tr>
            <th>Tanggal</th>
            <th>Customer</th>
            <th>Quantity</th>
            <th>Harga</th>
            <th>Total Harga</th>
        </tr>
    </thead>
    <tbody>

    <?php
        $query->execute(); 
        $row = $query->rowcount(); 

        if($row > 0){ 
            while($data = $query->fetch(PDO::FETCH_ASSOC)){ 
                $oID = $data['order_id'];
                $item = $db->prepare("SELECT * FROM orders_items WHERE order_id = '$oID' AND parent=3");
                $item->execute();
                while($i = $item->fetch(PDO::FETCH_ASSOC)){
                    $pID = $i['product_id'];
                    $product = $db->prepare("SELECT * FROM products WHERE product_id = '$pID'");
                    $product->execute();
                    while($p = $product->fetch(PDO::FETCH_ASSOC)){
                    //fech data
                    echo    "<tr>
                                <td>{$data['order_date']}</td>
                                <td>{$data['order_name']}</td>
                                <td>{$i['quantity']}</td>
                                <td>Rp. ".number_format($p['product_price'])."</td>
                                <td>Rp. ".number_format($p['product_price']*$i['quantity'])."</td>
                            </tr>";
                    }

                }
                    $total = 0;
                    $oID = $data['order_id'];
                    $rinci = $db->prepare("SELECT orders_items.order_id, SUM(orders_items.quantity * products.product_price ) AS grand_total 
                    FROM orders_items JOIN products ON products.product_id=orders_items.product_id WHERE order_id = '$oID' 
                    GROUP BY order_id");
                    $rinci->execute();
                    foreach($rinci as $r){
                    $total += $r['grand_total'];
        ?>
                    <tr class="bg-primary text-white">
                        <td class="text-center"><strong>Total</strong></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td><strong>Rp. <?=number_format($total);?></strong></td>
                    </tr>

这可能会奏效

   while($data = $query->fetch(PDO::FETCH_ASSOC)){
        $oID = $data['order_id'];
        $item = $db->prepare("SELECT order_items.*, products.*, (order_items.quantity*products.product_price) as total FROM order_items LEFT JOIN products ON products.product_id = order_items.product_id WHERE order_id='$oID' AND parent=3");
        $item->execute();
        while($i = $item->fetch(PDO::FETCH_ASSOC)){
            ?>
            <tr>
                <td><?php echo $data['order_date'];?></td>
                <td><?php echo $data['order_name'];?></td>
                <td><?php echo $i['quantity'];?></td>
                <td>Rp. <?php echo number_format($i['product_price']);?></td>
                <td>Rp. <?php echo number_format($i['product_price']*$i['quantity']);?></td>
            </tr>
            <?php
        }
    }
while($data=$query->fetch(PDO::fetch\u ASSOC)){
$oID=$data['order_id'];
$item=$db->prepare(“选择订单项目。*,产品。*,(订单项目.数量*产品.产品价格)作为订单项目的总数,左连接产品上的产品。产品id=订单项目.产品id,其中订单id='$oID'和父项=3”);
$item->execute();
而($i=$item->fetch(PDO::fetch_ASSOC)){
?>
卢比。
卢比。

既然呈现的页面中已经有了所有的数据,您只需使用一点脚本就可以构建总数。为什么您要费劲准备查询,然后将用户数据转储到查询中?请使用参数。正确操作。@您的代码不起作用,谢谢您。请提一个示例输出,然后我就可以得到您的问题。您需要每个订单项目的小计还是整个订单项目的小计?整个订单项目@NafishAhmed@dhedheerik88现在我认为这会起作用。我已经编辑了放置查询的位置。