2010-04-05 5 views
9

tmp 테이블을 사용하는 것을 피할 수있는 방법이 있습니까? 나는 각 제품의 합계를 생성하는 집계 함수 (합)와 쿼리를 사용하고기존 테이블과 쿼리 결과 세트를 결합하는 방법은 무엇입니까?

:

product_name | sum(qty) 
product_1 | 100 
product_2 | 200 
product_5 | 300 

지금 내가 다른 테이블라는 제품에 위의 결과를 가입하려는 : 결과는 다음과 같습니다 . 내가 이런 요약을 수 있도록 :

product_name | sum(qty) 
product_1 | 100 
product_2 | 200 
product_3 | 0 
product_4 | 0 
product_5 | 300 

내가이 일을 한 방법은 임시 테이블에 첫번째 쿼리 결과는 다음 제품 테이블과 조인 덤프 알고있다. 거기에 더 좋은 방법이 있습니까?

+3

처럼 할 수 있습니까? –

+0

집계 함수 (sum)가있는 쿼리를 사용하여 각 제품의 합계를 생성합니다. 결과는 다음과 같습니다. product_name | 합계 (수량) product_1 | 100 product_2 | 200 product_5 | 300 이제 위의 결과를 products라는 다른 테이블에 추가하려고합니다. 그래서 나는 다음과 같은 요약을 할 것이다 : product_name | 합계 (수량) product_1 | 100 product_2 | 200 product_3 | 0 product_4 | 0 product_5 | 300 이 일을하는 1 가지 방법은 임시 테이블에 대한 첫 번째 쿼리 결과를 덤프하고 제품 테이블과 결합하는 것입니다. 거기에 더 좋은 방법이 있습니까? – Yang

답변

24
SELECT Product_Name, Total FROM ProductTable x 
LEFT OUTER JOIN (SELECT SUM(qty) as Total, ProductID FROM InventoryTable 
    GROUP BY ProductID) y 
ON x.ProductID = y.ProductID 
+0

하위 쿼리에 GROUP BY ProductId가 있어야한다고 가정합니다. – Powerlord

+0

@OMG : 고침, 고마워. – egrunin

1

하나의 select 쿼리에서 여러 조인을 수행 할 수 있습니다. 그게 당신의 문제를 해결합니까? 당신이 요구하는 것을 말하기는 어렵습니다.

2

당신은 몇 가지 예를 제공시겠습니까이

select table1.productname, virtualtable.qty 
from table1 
inner join (
    select productid, qty 
    from table2 
    group by productid 
) as virtualtable on virtualtable.productid = table1.productid 
관련 문제