2012-08-31 3 views
3

상위 3 명의 고객을 쿼리하려고합니다.상위 3 고객을위한 MySQL 쿼리

  • 고객 테이블 (CustomerID를, 회사)
  • 제품 테이블 (제품 일련 번호, 제품명, 가격)
  • 주문 테이블 (OrderID를, 날짜, 금액, CustomerID를)
 
OrderID  Date  Amount  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 
: 나는 3 개 테이블이

이 표를 참조하는 경우 :

  • 10042이 ordere있다 제품의 제품의 D $ (180)의 가치가
  • 10043을 주문했다 $ (110)의 가치는
  • 10044 내가이 같은 정보 조회하려면 어떻게 제품

의 순서 $ (100)의 가치가 있습니다

상위 3 고객

 
CustomerID Company  Cost of Products Ordered 
10042  HP  $180 
10043  Acer  $110 
10044  Sony  $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>"; 
+1

"현재 나는이 mysql을 가지고 있는데 어떻게 그것을 원하는지 표시하지 않는다." 검색어가 제공하는 것을 보여줄 수 있고 그것이 당신이 원하는 것과 어떻게 다른지 설명 할 수 있습니까? –

+1

흠. 내게 "총"과 "카운트"그냥 똑같은 것 같지 않습니다 ... –

+0

@ MarkByers 나는 내 질문에 점점 메신저를 업데이 트했습니다. – user1501784

답변

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 
+0

"하지만 오류가 발생했습니다." 어떤 오류입니까? 또한 의견에 코드를 게시하지 마십시오. 질문에 대한 답을 얻기 위해 필요한 모든 관련 정보를 포함하도록 질문을 업데이트하십시오. –

+0

경고 : mysql_numrows()는 매개 변수 1이 리소스가 될 것으로 기대하고 boolean은 C : \ xampp \ .... line 57에 있습니다. – user1501784

+0

ok $ result = mysql_query ($ query) or die ($ query. "

".mysql_error()); 이 오류가 발생했습니다 : FUNCTION db.SUM이 없습니다. – user1501784

0

다음 쿼리 사용 ... I c 그것은 ... 그 일을 망쳤다.

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