2013-09-05 5 views
2

나는 두 개의 다른 테이블에서 총 가치를 합산하는 방법에 나와 함께이 문제가 있고 다음 총을 얻은 후 그것을 뺍니다. 예를 들어 나는 테이블 "rsales"과 "sales"를 가지고 있으며 아래에이 flue가 있습니다. "판매"합계 두 개의 다른 테이블과 합계를 뺍니다

id | total | pcode | 
7 | 100 | 2143 | 
8 | 50 | 2222 | 

내 문제는 이것이다에서 "rsales"

id | total | pcode | 
1 | 100 | 2143 | 
2 | 100 | 2143 | 
3 | 50 | 2222 | 
4 | 50 | 2222 | 

데이터로부터

데이터입니다. 나는 모든 합계 값을 rsales 그룹의 판매량과 합계 값을 pcode로 합산하고 그 합계를 뺀 값을 빼기를 원합니다. 내 페이지는 이런 식이어야합니다.

total pcode 
| 100 | 2143 | 
| 50  | 2222 | 

내가이 FF로 코드를 가지고 있지만 나를 위해 법과 나던

sql "select sum(rsales.total)- sum(sales.total) as t1 where pcode = rsales.pcode" 
+1

어떤 쿼리가 작동하지 않습니까? –

+0

@ExplosionPills 나는 'FROM' 절을 놓친 것 같아 ... –

답변

1

사용 :

SELECT 
    SUM(r.total)-(
        SELECT SUM(s.total) 
        FROM sales AS s WHERE r.pcode=s.pcode 
       ) as total, 
    r.pcode 

    FROM rsales AS r 

    GROUP BY r.pcode; 

출력 :

+--+--+--+--+--+- 
| total | pcode | 
+--+--+--+--+--+- 
| 100 | 2143 | 
| 50 | 2222 | 
+--+--+--+--+--+- 
2 rows in set 
+0

'JOIN'도 작동해야한다고 생각하지만, 서브 쿼리는 알려지지 않은 점을 감안할 때 훨씬 안전 해 보입니다. –

+0

아무 생각도 들지 않지만 작동해야합니다. (나는 묻는 사람이 아니다.) –

+0

테스트가 잘되고있다, 나는 asker의 피드백을 원한다. – Salim

0

당신이 이런 식으로 뭔가를 시도?

SELECT 
    SUM(L.total) as lTotal, SUM(R.total) as rTotal 
FROM 
    sales L 
INNER JOIN rsales R 
    ON 
     R.pcode = L.pcode 
GROUP BY L.pcode 

두 테이블 모두에서 예상되는 값을 얻을 수 있으면 쉽게 FROM 절에 덧셈 및 덧셈을 추가 할 수 있습니다.

0

이렇게하려면 조인이 필요 없습니다. 이 솔루션은 일부 pcodes가 하나의 테이블에만있는 경우 작동합니다.

select SUM(total), pcode from (
     select sum(total) as total, pcode from rsales group by pcode 
    union all 
     select SUM(-total) as total, pcode from sales group by pcode) salesTables 
group by pcode 
관련 문제