2016-07-06 3 views
-2

나는 종류 품목의 명부를 얻고 그 종류에 연결된 총계를 표시하고 싶다. 나는 "거래"테이블에 "금액"필드가 있으며 카테고리 테이블에 연결하려고합니다.SQL의 범주 집합에서 값을 합하는 방법은 무엇입니까?

이 내 테이블이 방법은 다음과 같습니다

  1. 분류 마스터
  2. 하위 카테고리 마스터
  3. 품목 마스터
  4. 거래

그래서 범주에 내 "금액"필드를 얻을 수 있습니다, 나는 그 (것)들 사이 특정한 어떤 란을 통과해야 할 것입니다. Subcategory master에는 CategoryID가 있고 item master에는 subcatid가 있고 transaction에는 itemid가 있습니다. 내가 거래 날짜를 이용하여 양을 그룹화 할 때

이전 프로세스가 순조롭게 :

SELECT TransactionDate, SUM(Amount) FROM transaction GROUP BY MONTH(TransactionDate)

가 지금은 범주를 사용하여 그룹화에 직면하고있어 문제가 양의 모든 것 같습니다이다 = 50이지만 데이터베이스에서는 여전히 다릅니다. 나는 이것이 정말 어리 석다는 것을 알고 있지만 프로그래밍에 익숙하지 않고 논리를 적절하게 사용하는 방법을 모르겠다.

SELECT categorymaster.CategoryName, transaction.Amount 
    FROM categorymaster 
    INNER JOIN subcategorymaster 
    INNER JOIN itemmaster 
    INNER JOIN transaction 
    GROUP BY categorymaster.CategoryName 
+0

모든 외래 키를 사용하여 설정을 시도 했습니까? – marti

+0

네, 그랬습니다. 이 질문을 편집하려면 – jdoe

+0

이 필요합니다. 해당 샘플 데이터를 사용하여 실제 코드, 일부 샘플 데이터 및 원하는 결과를 게시하십시오. 귀하의 코드를 단축하면 우리 모두가 그저 그것을보고 궁금한 점을 잊어 버렸습니다. 금액에 대한 집계를하지 않았거나 .... SELECT transactionDate, GROUP BY Month()에 transactiondate가 그룹별로 있어야하기 때문에 유효한 문. 그러나 SELECT MOINT (TransactionDate)는 ..... 누군가에게 당신이 효과적으로 문제를 해결할 수 있도록 알 수없는 것일 수 있습니다. – Matt

답변

0

이 대답은 각 테이블의 기본 키가 "ID"라고 가정합니다. 당신은 그 정보를 제공하지 않았습니다.

SELECT categorymaster.CategoryName, sum(transaction.Amount) 
    FROM categorymaster 
     INNER JOIN subcategorymaster 
      ON subcagetorymaster.CategoryId = categorymaster.ID 
     INNER JOIN itemmaster 
      ON itemmaster.SubCatId = subcategorymaster.ID 
     INNER JOIN transaction 
      ON transaction.ItemId = itemmaster.ID 
GROUP BY categorymaster.CategoryName 
+0

당신은 구세주입니다. @ 스톤 자이언트 – jdoe

관련 문제