2012-06-19 2 views
-1

두 테이블, 제품 및 판매하고있다. 제품 테이블에서는 모든 사용자가 제품을 추가합니다. 판매가 이루어지면 판매 테이블은 해당 제품을 추가 한 사용자를 포함하여 제품에 대한 모든 정보로 업데이트됩니다.다른 테이블의베이스에 테이블의 Mysql 정렬

제품 표

id|Product Name|User|Price|Date

판매 표 판매자 및 사용자가

내 질문에 같은 값이

id|Product Name|Quantity|Seller|Price

입니다 때 나는 제품을 전시하고, 나는 더 많은 제품을 판매하는 사용자, 그의 모든 제품이 최상위에 있어야하고, 제품 테이블에 제품을 가지고 있지만 아무런 판매도하지 않은 다른 사용자가 맨 아래에 있어야한다고 설명한다.

SELECT a.UserID, 
     Count(a.ProductID) as TotalCount 
    FROM Sales a INNER JOIN Products b 
      ON a.ProductID = b.ProductID 
GROUP BY a.UserID 
ORDER BY TotalCount desc 

사용자 ID이 제품
제품 ID이 제품의 ID입니다 판매하는 사람의와 ID입니다 :

+2

이미 모델을 작성해야합니까? 이 경우 모의 데이터로 [SQLFiddle] (http://sqlfiddle.com/)을 만들 수 있습니까? –

+1

사용자 당 판매 수를 계산하고 해당 열을 기준으로 주문하십시오. –

+1

정교하게 작성하십시오. 이제 자신의 제품을 하나 이상의 제품을 판매 한 사용자가 최상위에 있어야하고 두 번째를 두 번째로해야하는 방식으로 모든 제품을 쿼리하고 싶습니다. 3 위 3 위 등등 .. " –

답변

3

그래서 이것은 단지 테이블 이름과 열 이름 가정입니다 두 테이블을 연결하는 필드
COUNT()은 모든 사용자에 대한 레코드를 계산하는 집계 함수의 이름입니다.

추신 : 질문에 테이블의 스키마를 포함하십시오. 그런 경우에는

UPDATE 1

, 당신은 LEFT JOIN를 사용해야합니다 :

SELECT a.ProductName, 
     COUNT(b.Seller) as TotalSellerCount 
    FROM Products a LEFT JOIN Sales b 
     ON a.User = b.Seller 
GROUP BY a.ProductName 
ORDER BY TotalSellerCount desc 
+0

나는 이런 식으로 시도했지만이 쿼리에서는 판매 기록이있는 유일한 제품을 얻습니다. 판매가없는 다른 제품은 표시되지 않습니다. 나는 모든 제품을 원하지만 더 많은 것을 판매하는 사용자가 최상위에 위치해야한다. – user1465810

+0

@ user1465810 'LEFT JOIN'을 사용하여 답변을 업데이트했습니다 –

+0

작동합니다. 감사 – user1465810

관련 문제