3

上位 3 人の顧客を照会しようとしています。私は3つのテーブルを持っています:

  • 顧客テーブル (CustomerID、Company)
  • 商品テーブル (ProductID、ProductName、Price)
  • 注文テーブル (OrderID、Date、Amount、CustomerID)
OrderID 日付 金額 CustomerID
19 2012-08-24 20 10043
20 2012-08-24 40 10044
21 2012-08-24 60 10044
22 2012-08-24 80 10042
23 2012-08-24 90 10043
24 2012-08-24 100 10042
25 2012-08-24 50 10041

この表が表示された場合:

  • 10042 は $180 相当の製品を注文しました
  • 10043 は $110 相当の製品を注文しました
  • 10044 は $100 相当の商品を注文しました

この情報を次のように照会するにはどうすればよいですか。

上位 3 名の顧客

CustomerID 会社 注文した製品のコスト
10042 HP $180
10043 エイサー $110
10044 ソニー $100

現在、このmysqlを持っていますが、希望どおりに表示されません。誰かが私の間違いを指摘するのを助けることができますか?

$query = "SELECT 
    CustomerOrder.CustomerID, CustomerOrder.Amount, 
    Customer.Company, 
    count(CustomerOrder.Amount) as total_amount
FROM 
    `CustomerOrder` 
     INNER JOIN Customer ON Customer.CustomerID = CustomerOrder.CustomerID
GROUP BY CustomerID 
ORDER BY total_amount DESC LIMIT 3";

現在、私はこれを取得しています:

 Top 3 Customers

CustomerID  Company         Cost of Product Ordered
10042       HP          80.00
10043       Acer            20.00
10044       Sony            40.00

このコードを使用して表示しています:

$result = mysql_query($query);
$num=mysql_numrows($result);
echo "<table border='1'>
<tr>
<th>CustomerID</th>
<th>Company</th>
<th>Cost of Product Ordered</th>

</tr>";

while($row = mysql_fetch_array($result)) 
  {
  echo "<tr>";
  echo "<td>" . $row['CustomerID'] . "</td>";
  echo "<td>" . $row['Company'] . "</td>";
  echo "<td>" . $row['total_amount'] . "</td>";

  echo "</tr>";
  }
echo "</table>";
4

2 に答える 2

1

SUMの代わりに使用COUNT:

SELECT 
    Customer.CustomerID,
    Customer.Company, 
    SUM(CustomerOrder.Amount) AS total_amount
FROM CustomerOrder
INNER JOIN Customer
ON Customer.CustomerID = CustomerOrder.CustomerID
GROUP BY Customer.CustomerID 
ORDER BY total_amount DESC
LIMIT 3
于 2012-08-31T03:58:47.950 に答える
0

次のクエリを使用してください...私はそれをチェックしました...それは機能しています

select ordr.CustomerID,cust.Company,(Sum(ordr.Amount)) as  'Cost of Products Ordered' from `order` ordr , customer cust where cust.CustomerID=ordr.CustomerID group by ordr.CustomerID order by Sum(ordr.Amount) desc limit 3
于 2012-08-31T04:48:10.877 に答える