2012-07-26 35 views
0

如何根據選擇的條件編寫一個sql查詢以顯示來自2個表的項目來自不同的表格。如何根據從不同表中選擇的條件編寫一個sql查詢來顯示來自兩個表的項目

表我:

  1. 客戶表中的列客戶ID,姓名,地址,電話
  2. CustomerOrder表中的列客戶ID,訂單ID,日期,總金額,狀態
  3. 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:_________ 

回答

0

因爲你並不需要在這一步中顯示客戶信息,那麼您查詢可以是:

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

+0

我在這條語句收到錯誤︰foreach($ data as $ row) – user1501784 2012-07-26 08:23:42

+0

錯誤是注意:未定義的變量:C:\ xampp \ htdocs \ listorderbycustomertest.php中的數據在線74 警告:無效的參數提供給foreach()在C:\ xampp \ htdocs \ listorderbycustomertest.php在線74 – user1501784 2012-07-26 08:25:25

+0

是這樣它應該是:$ query =「SELECT co.OrderID ,co.Date .....; $ result = mysql_query($ query); \t \t $ current_order_id = false; ... ???? – user1501784 2012-07-26 08:28:49

0

嘗試這樣的: 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

+0

表'狀態'?? !! – Skrol29 2012-07-26 08:01:30

+0

@ Skrol29這個問題沒有正確的格式,所以我認爲Status是一張桌子。修復。 – Viskovic 2012-07-26 08:04:45

+0

查詢起作用。但如何顯示它在網站:( – user1501784 2012-07-26 08:07:30

相關問題