如何根据从不同表中选择的条件编写一个sql查询来显示来自两个表的项目
如何根据选择的条件编写一个sql查询以显示来自2个表的项目来自不同的表格。如何根据从不同表中选择的条件编写一个sql查询来显示来自两个表的项目
表我:
- 客户表中的列客户ID,姓名,地址,电话
- CustomerOrder表中的列客户ID,订单ID,日期,总金额,状态
- OrderItem的表中有列OrderID,ProductCode,UnitPrice,Qty,TotalPrice
因此,当选择一个CustomerID时,我想要显示的订单连接这3个表。所以下面它应该显示客户曾经放置过的所有订单。 我试过使用查询:
Select CustomerOrder.*, OrderItem.*
From CustomerOrder
INNER JOIN OrderItem Where Customer.CustomerID = $CustomerID
但它不工作。在查询中需要帮助,并且使用php正确显示数据。
任何人都可以帮忙吗?
E.g.
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
,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
获得所有订单信息。 然后对结果进行循环,并为每个订单获取物品信息OrderItem
。
尝试这样的: 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
表'状态'?? !! – Skrol29 2012-07-26 08:01:30
@ Skrol29这个问题没有正确的格式,所以我认为Status是一张桌子。修复。 – Viskovic 2012-07-26 08:04:45
查询起作用。但如何显示它在网站:( – user1501784 2012-07-26 08:07:30
我在这条语句收到错误︰foreach($ data as $ row) – user1501784 2012-07-26 08:23:42
错误是注意:未定义的变量:C:\ xampp \ htdocs \ listorderbycustomertest.php中的数据在线74 警告:无效的参数提供给foreach()在C:\ xampp \ htdocs \ listorderbycustomertest.php在线74 – user1501784 2012-07-26 08:25:25
是这样它应该是:$ query =“SELECT co.OrderID ,co.Date .....; $ result = mysql_query($ query); \t \t $ current_order_id = false; ... ???? – user1501784 2012-07-26 08:28:49