好吧,我知道这很愚蠢,但我被困住了,我需要一个脑袋。 我有3个表(订单,订单,产品),我在查询中使用2个左外连接来显示客户端部分中的订单历史记录:
SELECT * FROM orderitems oi, orders o
LEFT OUTER JOIN product p ON p.dbarcode = oi.orderitems_item
WHERE o.order_code = oi.orderitems_ordercode
AND oi.orderitems_ordercode = '".$_GET['ordercode']."'`
我可以在表order_items中为每个产品显示一行,但我似乎无法显示(回显)在order.order_amount字段中保存的总金额,我认为它与事实有关字段有多个实例或任何其他。如何通过加入多个表来显示数据?
编辑Quassnoi:
我遍历结果并为每个结果创建一个表格行,在循环之后,我想显示总计:
<? do { ?>
<tr>
<td><? echo $row_OrderItems['dbarcode']; ?></td>
<td><? echo $row_OrderItems['name']; ?></td>
<td><? echo $row_OrderItems['orderitems_quantity']; ?></td>
<td><? echo $row_OrderItems['price']; ?></td>
</tr>
<? } while ($row_OrderItems = mysql_fetch_assoc($OrderItems)); ?>
<tr>
<td colspan="5">Total order amount (incl. shipping and handling): € <? echo $row_OrderItems['order_amounteuro']; ?></td>
</tr>
答案 0 :(得分:3)
o.order_amount
将在每一行重复,只需取第一行。
当然,永远不要使用它:
oi.orderitems_ordercode = '".$_GET['ordercode']."'`
没有mysql_real_escape_string
。
答案 1 :(得分:1)
<? do { ?>
<tr>
<td><? echo $row_OrderItems['dbarcode']; ?></td>
<td><? echo $row_OrderItems['name']; ?></td>
<td><? echo $row_OrderItems['orderitems_quantity']; ?></td>
<td><? echo $row_OrderItems['price']; ?></td>
</tr>
<?
$total = $row_OrderItems['order_amounteuro']; // store the total, before you loop past the last row
} while ($row_OrderItems = mysql_fetch_assoc($OrderItems)); ?>
<tr>
<td colspan="5">Total order amount (incl. shipping and handling): € <? echo $total; ?></td>
</tr>
答案 2 :(得分:0)
仅供参考,您的陈述的这一部分:
SELECT * FROM orderitems oi, orders o
LEFT OUTER JOIN product p ON p.dbarcode = oi.orderitems_item
从orderitems
,orders
和products
获取所有内容。使用您想要所有字段的表前缀*
,或重写它以获取特定字段。