![](/img/trans.png)
[英]How do I write a PHP loop to display data from a database query in Table format?
[英]How do I write an sql query to display items from 2 tables based on a selection of a criteria which is from a different table
如何编写一个sql查询以根据来自不同表的条件的选择显示2个表中的项目。
我有的表:
因此,当选择了CustomerID时,我希望将这3个表一起显示订单。 因此,如下所示,它应该显示客户曾经下过的所有订单。 我尝试使用查询:
Select CustomerOrder.*, OrderItem.*
From CustomerOrder
INNER JOIN OrderItem Where Customer.CustomerID = $CustomerID
但这不起作用。 在查询以及使用php正确显示数据时需要帮助。
有人可以帮忙吗?
例如
CustomerID:__________
OrderID:__1____ Date:______ TotalAmount:______ Status:_____
ProductCode:__ UnitPrice:___ Qty:_____TotalPrice:__________
ProductCode:___ UnitPrice:______ Qty:_____ TotalPrice:_________
OrderID:___2___ Date:______ TotalAmount:______ Status:_____
ProductCode:__ UnitPrice:___ Qty:_____TotalPrice:__________
ProductCode:___ UnitPrice:______ Qty:_____ TotalPrice:_________
像这样尝试: SELECT co.OrderID,date,TotalAmount,ProductCode, UnitPrice,Qty,TotalPrice,Status FROM CustomerOrder AS co INNER JOIN OrderItem AS oi ON oi.orderID = co.OrderID INNER JOIN Customer AS c ON c.CustomerID = co.CustomerID WHERE c.CustomerID = $customer
由于您无需在此步骤中显示客户信息,因此您可以查询:
SELECT co.OrderID
,co.Date
,co.TotalAmount
,co.Status
,ci.ProductCode
,ci.UnitPrice
,ci.Qty
,ci.TotalPrice
FROM CustomerOrder AS co
INNER JOIN OrderItem AS ci ON (ci.orderID = co.OrderID)
WHERE co.CustomerID = $customer
ORDER BY co.OrderID, ci.ProductCode
由于您不希望在输出中重复订单信息,因此您的PHP代码应如下所示:
$current_order_id = false;
foreach ($data as $row) {
if ($current_order_id!==$row['OrderID']) {
$current_order_id = $row['OrderID'];
echo "OrderID: ".$row['OrderID']." , Date: ".$row['Date']." , TotalAmount: ".$row['TotalAmount']." , Status: ".$row['Status']." <br>";
}
echo "ProductCode: ".$row['ProductCode']." , UnitPrice: ".$row['UnitPrice']." , Qty: ".$row['Qty']." , TotalPrice: ".$row['TotalPrice']." <br>";
}
另一种方法是首先仅从CustomerOrder
获取所有Orders信息。 然后循环的结果,并得到infotmation项目OrderItem
每个订单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.