2016-10-28 2 views
0

두 개의 간단한 테이블이 있습니다.어떻게 열 값의 합계 사이에 차이가 있습니까?

tbl_purchasedtbl_sold

col_item_name col_no_of_items 
Fan       5 
Builb      5 
Oven      5 
Fan       2 
Builb      2 

tbl_sold 나는 항목의 이름으로 구입 한 항목, 그룹의

  1. SUM를 취할 필요가

    col_item_name col_no_of_items 
    Fan       3 
    Oven      1 
    

    을 tbl_purchased.

  2. 판매 된 항목의 합계, GROUP BY 항목 이름.

다음 쿼리를 별도로 사용할 수 있습니다.

SELECT col_item_name, SUM(col_no_of_items) 
FROM tbl_sold 
GROUP BY col_item_name; 

SELECT col_item_name, SUM(col_no_of_items) 
FROM tbl_purchased 
GROUP BY col_item_name; 

은 지금 현재 주식을 취할 필요가있다. 항목 이름 BY GROUP - (판매 항목의 SUM 구입 한 항목의 SUM)을 의미

enter image description here

.

SINGLE SQL 쿼리를 사용하여 할 수 있습니까?

SELECT p.col_item_name, SUM(p.col_no_of_items) - SUM (s.col_no_of_items) 
FROM tbl_purchased p 
left join tbl_sold s on p.col_item_name=s.col_item_name 
GROUP BY p.col_item_name; 
+0

정말 테이블에 키가 있어야합니다. 팬을 2 명 더 사야한다면 어떻게 될까요? – apokryfos

+1

이것은 숙제처럼 의심스럽게 보입니다. 당신은 하나의 쿼리에서 그것을 할 수 있습니다; 조인 및 집계 함수를 읽습니다. – Walf

+0

필자는 'tbl'이라는 접두사 테이블과 'col'열이 매우 빨리 지쳐 있다는 것을 알게 될 것으로 생각합니다. – Strawberry

답변

2

(비록을 조정해야 할 수도 있습니다) 울부 짖는 소리 같은 것을보십시오. name ((SELECT SUM (NO) purcahse FROM WHERE name = p.name) - (0) = sellname s.name) 행 (SUM (NO) COALESCE 해당) purcahse P 좌에서 남은 sell들 조인 p.name = s.name GROUP BY p.name;

감사 :

+0

감사합니다 Andrei Filimon .. – samrukshan

0

을 또는 당신이 완벽하게 당신이

SELECT 페이지 작동

SELECT col_item_name, SUM(no_purchased) - SUM(no_sold) AS item_stock 
FROM 
    (SELECT col_item_name, col_no_of_items AS no_purchased, 0 AS no_sold 
    FROM tbl_purchased 
    UNION ALL 
    SELECT col_item_name, 0 AS no_purchased,col_no_of_items AS no_sold) 
GROUP BY col_item_name 
+0

onedaywhen Kep Brown .. – samrukshan

0

을 사용할 수

+0

'purcahse'는 무엇입니까 – Strawberry

+0

purcahse는 구매 표이며 판매는 ur 판매 표입니다 –

+0

내 것이 아니라 '구매'또는 'tbl_purchased'라고 부르지 마십시오 – Strawberry

0

제안을 즐길 : 다음 간단한 산술 연산을 수행하여 첫 번째 테이블 표현식이 tbl_curent_stock로합니다 (요약에 이름, 예를 들어 col_no_of_items_purchased을 줄 필요가있다)에 가입. 반 결합으로 구입하지 않은 품목도 고려해야합니다. 그렇다면 UNION 두 개를 합쳐서 :

SELECT col_item_name, 
     col_no_of_items - col_no_of_items_purchased AS col_no_of_items 
FROM tbl_curent_stock 
    NATURAL JOIN 
    (SELECT col_item_name, 
       SUM(col_no_of_items) AS col_no_of_items_purchased 
     FROM tbl_purchased 
     GROUP 
      BY col_item_name) AS t 
UNION 
SELECT col_item_name, col_no_of_items 
    FROM tbl_curent_stock 
WHERE col_item_name NOT IN (SELECT col_item_name 
           FROM tbl_purchased); 
+0

감사합니다 onedaywhen .. – samrukshan

관련 문제