0

別のテーブルからの基準の選択に基づいて、2 つのテーブルからアイテムを表示する SQL クエリを作成するにはどうすればよいですか。

私が持っているテーブル:

  1. Customerテーブルには CustomerID、Name、Address、Tel の列があります
  2. CustomerOrderテーブルには、CustomerID、OrderID、Date、TotalAmount、Status の列があります。
  3. OrderItemテーブルには、OrderID、ProductCode、UnitPrice、Qty、TotalPrice の列があります。

そのため、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:_________
4

2 に答える 2

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

于 2012-07-26T07:54:39.697 に答える
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>";
}

同じことを行うもう 1 つの方法は、最初にすべての Orders 情報をCustomerOrderonly から取得することです。次に、結果をループして、OrderItem各注文の商品情報を取得します。

于 2012-07-26T08:15:11.490 に答える