在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现在我认为这会起作用。我已经编辑了放置查询的位置。