【发布时间】:2014-08-13 04:00:40
【问题描述】:
我有一个问题要问专家。我不知道如何将所有订单 ID 与相同的 ID 结合起来,
如图所示,所有订单 ID = 1 的订单都在一次交易中,我如何将所有具有相同 ID 的订单 ID 合并,并仅显示所有购买的商品的总价。并且由于所有订单 ID 都相同,因此交付和付款选项也将相同,只需显示一行。
还有一个后续问题是,如果我将所有相同的订单 ID 组合在一起,我将如何显示所有购买的产品,计算总价并在一行中显示交货和付款选项
这是我的数据库关系的图片,我只是关注互联网上的那些。唯一的区别是“products”改为“inventory”,products中的“serial”改为“prod_id”
这是我显示当前图片的代码。
<?php
session_start();
$conn = @mysql_connect("localhost","root","");
$db = @mysql_select_db("");
$qry = "SELECT customers.name,customers.payment,customers.carrier, orders.date, order_detail.productid, order_detail.quantity, order_detail.price, order_detail.orderid, inventory.prod_name
FROM customers
RIGHT JOIN orders on customers.serial=orders.serial
RIGHT JOIN order_detail on orders.serial=order_detail.orderid
LEFT JOIN inventory on order_detail.productid=inventory.prod_id where customers.email='{$_SESSION['email']}'";
mysql_set_charset("UTF8");
$result = @mysql_query($qry);
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
echo "<center>";
echo "<table class='CSSTableGenerator'>
<tr>
<td>Date of Purchase</td>
<td>First Name</td>
<td>Order ID</td>
<td>Products</td>
<td>Quantity</td>
<td>Total Price</td>
<td>Delivery Option</td>
<td>Payment Option</td>
<tr>";
while ($row=mysql_fetch_array($result)){
echo "<tr>";
echo "<td>".$row['date']."</td>";
echo "<td>".$row['name']."</td>";
echo "<td>".$row['orderid']."</td>";
echo "<td>".$row['prod_name']."</td>";
echo "<td>".$row['quantity']."</td>";
echo "<td>".($row['price']*$row['quantity'])."</td>";
echo "<td>".$row['carrier']."</td>";
echo "<td>".$row['payment']."</td>";
echo "</tr>";
}
echo "</table>";
?>
</table>
【问题讨论】:
-
使用 sum(total_price) where id=1,当你得到你的订单 id 时,只要选择就会为你获取所需的详细信息,然后如果数据重复然后在最后一次显示它来解决你的问题问题,如果你愿意,你可以规范化表格以删除冗余数据
-
也就是说,我们可以有一个单独的表来存储 orderid、firstname、dateofpurchase、delivery option、payment option,从而减少冗余。 orderid 将是表之间的公因子,以便获取数据